【问题标题】:How to run MongoDB commands with pymongo?如何使用 pymongo 运行 MongoDB 命令?
【发布时间】:2016-01-15 01:23:15
【问题描述】:

我需要查看与 MongodDB 的连接列表。我知道如何在 mongo 控制台中进行操作:

> db.currentOp(true)

现在我想用 pymongo 做同样的事情。我尝试了以下操作,但没有成功:

from pymongo import MongoClient
client = MongoClient(host="myhost.com")
db = client.mydb

之后,我以各种组合使用db.command(),试图将"db.currentOp(true)" 传递给它,但没有成功。

如何正确操作?问题是如果我知道如何从 db 控制台运行命令,如何使用 pymongo 运行命令?有没有通用的方法?

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    快速浏览API 会引导我找到我认为您正在寻找的内容。

    过去在使用 PyMongo 时,我注意到 mongo shell 中的驼峰式函数(例如 db.currentOp())直接转换为 python 语法,所以它变成了 db.current_op() .

    试试这个:

    from pymongo import MongoClient
    client = MongoClient(host="myhost.com")
    db = client.mydb
    current_ops = db.current_op(True)
    

    【讨论】:

      【解决方案2】:

      Python 驱动程序中的每个方法都遵循PEP 0008,除非我完全弄错了

      在 Pymongo 中,您需要使用 .current_op() 方法来获取有关当前正在运行的操作的信息。

      from pymongo import MongoClient
      client = MongoClient(host="myhost.com")
      db = client.mydb
      infos = db.current_op()
      

      当然,如果您想在结果集中列出当前空闲的操作,请将位置或关键字参数 include_all 设置为 True

      infos = db.current_op(True) # or infos = db.current_op(include_all=True)
      

      演示:

      In [8]: db.current_op()
      Out[8]: 
      {'inprog': [{'active': True,
         'client': '127.0.0.1:54268',
         'connectionId': 2,
         'desc': 'conn2',
         'lockStats': {},
         'locks': {},
         'microsecs_running': 45,
         'ns': 'admin.$cmd',
         'numYields': 0,
         'op': 'command',
         'opid': 793,
         'query': {'$all': False, 'currentOp': 1},
         'secs_running': 0,
         'threadId': '140272266217216',
         'waitingForLock': False}],
       'ok': 1.0}
      

      为了发出 MongoDB 命令,驱动程序提供了.command() 方法

      【讨论】:

        猜你喜欢
        • 2015-02-02
        • 1970-01-01
        • 2015-05-07
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-25
        • 2014-11-02
        相关资源
        最近更新 更多