Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 为什么pymongo评估结果与mongo shell不同?_Mongodb_Pymongo - Fatal编程技术网

Mongodb 为什么pymongo评估结果与mongo shell不同?

Mongodb 为什么pymongo评估结果与mongo shell不同?,mongodb,pymongo,Mongodb,Pymongo,当我在mongo shell中执行“db.abc.find()”时,它返回以下答案: db.abc.find() { "_id" : ObjectId("56a942bfec926681f17f09b6"), "name" : "foo" } 但当我通过PyMongo的eval方法执行相同的命令时,我收到了不同的答案: >>> from pymongo import MongoClient >>> client = MongoClient() >&g

当我在mongo shell中执行“db.abc.find()”时,它返回以下答案:

 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}
这是怎么回事? 如何修复它?

好吧,
eval()
绝对是邪恶的

您应该将代码包装到函数中以使其工作:

from bson import Code

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

为什么不从Python中调用
db.abc.find()
,然后从游标获取文档呢

[doc for doc in db.abc.find()]
还是:

db.abc.find_one()

你为什么要这样做,你想用邪恶来获得什么?