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

rvs*_*rvs 5 python mongodb pymongo

我试图在我的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

dcr*_*sta 11

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

> db.stats
function (scale) {
    return this.runCommand({dbstats:1, scale:scale});
}
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,dbstats会在运行时阻止您的数据库,因此它不适合生产.https://jira.mongodb.org/browse/SERVER-5714 (5认同)