Pymongo .eval()与Mongo shell --eval

时间:2015-07-09 15:48:29

标签: javascript python mongodb pymongo

使用.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命令相同的响应。

1 个答案:

答案 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']