Pymongo .eval()与Mongo shell --eval的区别

3
使用.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()如何工作,我需要具体了解如何正确地传递带有printjson()到pymongo。eval()`并获得与原始shell命令相同的响应。

1个回答

2
这是因为你正在使用不是 JavaScript 函数的 printjson()。请改用 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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接