2016-01-28 35 views
1

當我執行「db.abc.find()」在蒙戈外殼返回如下回答:爲什麼pymongo評估結果與mongo shell不同?

db.abc.find() 
{ "_id" : ObjectId("56a942bfec926681f17f09b6"), "name" : "foo" } 

但是當我通過PyMongo的eval方法執行相同的命令,我收到了不同的答案:

>>> from pymongo import MongoClient 
>>> client = MongoClient() 
>>> db = client.test 
>>> db.eval('db.abc.find()') 
{u'_special': False, u'_options': 0.0, u'_ns': u'test.abc', u'_db': {u'_mongo': {u'slaveOk': False, u'host': u'EMBEDDED'}, u'_name': u'test'}, u'_skip': 0.0, u'_numReturned': 0.0, u'_query': {}, u'_limit': 0.0, u'_mongo': {u'slaveOk': False, u'host': u'EMBEDDED'}, u'_collection': {u'_shortName': u'abc', u'_db': {u'_mongo': {u'slaveOk': False, u'host': u'EMBEDDED'}, u'_name': u'test'}, u'_mongo': {u'slaveOk': False, u'host': u'EMBEDDED'}, u'_fullName': u'test.abc'}, u'_cursor': None, u'_fields': None, u'_batchSize': 0.0} 

這是怎麼回事? 如何解決它?

+0

你爲什麼這樣做,你想用的eval()邪才達到什麼? – sergiuz

回答

1

那麼,eval()肯定是邪惡的,是actually deprecated

你應該換行代碼到一個功能,使其工作:

from bson import Code 

db.eval(Code('function() { return db.abc.find(); }')) 
0

爲什麼你不只是調用db.abc.find()從Python和讓你文件(S)從光標?

[doc for doc in db.abc.find()] 

或者還是:

db.abc.find_one() 
相關問題