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

Python MongoDB:如何从API获取db.stats(),python,mongodb,python-2.7,pymongo,Python,Mongodb,Python 2.7,Pymongo,我试图在python代码中获得db.stats()mongoshell命令的结果(用于监视目的) 但与例如serverStatus不同,我不能执行db.command('stats')。我在mongodb文档中找不到任何API等价物。我也尝试过使用db.$cmd的变体,但都不起作用 所以 小问题:如何在python代码中获得db.stats()(连接/对象的数量、数据和索引的大小等)的结果 更大的问题:有人能解释为什么有些shell命令可以很容易地从API访问,而另一些则不能?这很烦人:一些与管

我试图在python代码中获得db.stats()mongoshell命令的结果(用于监视目的)

但与例如serverStatus不同,我不能执行
db.command('stats')
。我在mongodb文档中找不到任何API等价物。我也尝试过使用db.$cmd的变体,但都不起作用

所以

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

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


PS:mongodb 2.0.2、pymongo 2.1.0、python2.7

Javascript shell的
stats
命令助手实际上调用了一个名为
dbstats
的命令,您可以使用。找出shell helper将运行的命令的最简单方法是在不带括号的情况下调用shell helper——这将打印出它运行的Javascript代码:

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

至于为什么一些命令有助手,而其他命令没有,这主要是一个偏好、时间和驱动程序作者感知到的使用频率的问题。您可以使用
Database.command
按名称运行任何命令,这只是
db.$cmd.find_one
的一个方便包装。您可以在上找到命令的完整列表。您还可以针对PyMongo为您发现需要频繁调用但PyMongo尚不支持的命令添加一个helper方法。

请注意,dbstats会在数据库运行时阻塞数据库,因此不适合在生产环境中使用。不清楚这是否仍然是
WiredTiger
存储引擎中的阻塞调用: