如何用pymongo运行MongoDB命令?

时间:2016-01-14 16:32:59

标签: python mongodb 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运行命令?有共同的方法吗?

2 个答案:

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