我需要查看MongodDB的连接列表。我知道如何在mongo控制台中执行此操作:
> db.currentOp(true)
现在我想用pymongo做同样的事情。我试过跟随它并没有用:
from pymongo import MongoClient
client = MongoClient(host="myhost.com")
db = client.mydb
之后我使用db.command()
尝试将"db.currentOp(true)"
传递给它时的各种组合,但没有成功。
怎么做得好?问题是如果我知道如何从数据库控制台运行它,如何使用pymongo运行命令?有共同的方法吗?
答案 0 :(得分:2)
快速浏览一下API,让我看到我认为你正在寻找的东西。
当我过去使用PyMongo时,我注意到的是mongo shell中的camelcase函数(例如db.currentOp())会直接转换为python语法,因此它变为db.current_op()
试试这个:
from pymongo import MongoClient
client = MongoClient(host="myhost.com")
db = client.mydb
current_ops = db.current_op(True)
答案 1 :(得分:1)
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()
方法