【问题标题】:MongoDB: how to get db.stats() from APIMongoDB:如何从 API 获取 db.stats()
【发布时间】:2012-02-02 07:29:43
【问题描述】:

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

【问题讨论】:

    标签: python mongodb python-2.7 pymongo


    【解决方案1】:

    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 找到完整的命令列表。您还可以submit a patch 针对 PyMongo 为您发现需要频繁调用但 PyMongo 尚不支持的命令添加辅助方法。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 2018-03-11
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多