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

时间:2012-01-04 11:33:48

标签: python mongodb pymongo

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

但与示例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,python 2.7

1 个答案:

答案 0 :(得分:11)

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

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

至于为什么有些命令有助手而其他命令没有助手,这主要是驱动程序作者的偏好,时间和使用频率的问题。您可以使用Database.command按名称运行任何命令,这只是db.$cmd.find_one周围的便利包装器。您可以在List of Database Commands找到完整的命令列表。您还可以{Py {[3}}对PyMongo添加一个帮助器方法,用于您需要经常调用但PyMongo尚不支持的命令。