如何使用 pymongo 运行 MongoDB 命令?

How to run MongoDB commands with pymongo?

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

> db.currentOp(true)

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

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

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

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

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() 方法

快速浏览 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)