使用.eval()?
在pymongo中该命令的等价物是什么mongo localhost/mydb --quiet --eval "printjson(db.getCollectionNames())"
因为这似乎不起作用并且什么都不返回:
from pymongo import MongoClient
client = MongoClient("mongodb://localhost")
db = client.mydb
myjs = "printjson(db.getCollectionNames())"
print db.eval(myjs)
是的,我理解db.collection_names()
是如何工作的,我特别需要了解如何正确传递javascript与printjson() to pymongo
。eval()`并获得与原始shell命令相同的响应。
答案 0 :(得分:2)
这是因为您使用的printjson()
不是JavaScript函数。请改用return
。
In [6]: c = Code("function(){return db.getCollectionNames()}")
In [7]: db.eval(c)
Out[7]:
['bar',
'baz',
'col',
'collection',
'demo',
'first_use',
'sCriteria',
'spam',
'system.indexes',
'test',
'v']