一尘不染

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

python

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


阅读 329

收藏
2021-01-20

共1个答案

一尘不染

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尚不支持的命令添加辅助方法。

2021-01-20