2015-07-09 3 views
2

Что такое эквивалент этой команды в pymongo с использованием .eval()?Pymongo .eval() vs. Mongo shell --eval

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() `и получить тот же ответ, что и в исходной команде оболочки.

ответ

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'] 
Смежные вопросы