MongoDB:如何从API获取db.stats()

发布于 2021-01-29 14:11:07

我正在尝试在我的python代码中获取db.stats()mongo shell命令的结果(出于监视目的)。

但是与例如serverStatus不同,我做不到db.command('stats')。我在mongodb文档中找不到任何等效的API。我也尝试了变体,db.$cmd但没有一个奏效。

所以,

小问题:如何db.stats()在python代码中获得(连接/对象数,数据和索引的大小等)结果?

更大的问题:谁能解释为什么一些shell命令可以从API轻松访问而另一些则不能?这很烦人:某些与管理员相关的工具可通过db.$cmd.sys,某些db.command,某些…来访问?有这种情况的标准或解释吗?

PS:mongodb 2.0.2,pymongo 2.1.0,python 2.7

关注者
0
被浏览
109
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Javascript
    shell的stats命令助手实际上调用了一个名为的命令dbstats,您可以使用Database.command方法从PyMongo运行该命令。找出shell帮助程序将运行什么命令的最简单方法是不带括号地调用shell帮助程序-
    这将打印出它运行的Javascript代码:

    > db.stats
    function (scale) {
        return this.runCommand({dbstats:1, scale:scale});
    }
    

    至于为什么有些命令有帮助程序而其他命令却没有帮助程序,这很大程度上是驱动程序作者偏好,时间和使用频率的问题。您可以使用来按名称运行任何命令Database.command,这只是一个方便的包装db.$cmd.find_one。您可以在“数据库命令列表”中找到命令的完整列表。您还可以提交针对PyMongo的补丁,为您发现需要经常调用但PyMongo尚不支持的命令添加辅助方法。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看