我有一个partner collection
我正在使用pymongo
来检索数据
当我使用 MongoDB 查询集合时,我看到以下结果
db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{})
{ "_id" : ObjectId("4eb463cb158acb554e8c9c11"), "unique_key" : "c89dbe313932008febde61cdd2a071a1d", "name" : "ABC", "primary_key" : 12 }
但是当我通过 pymongo 查询时,这就是我的工作
for document in collection.find(find, criteria):
print document
where find = {'unique_key': 'c89dbe313932008febde61cdd2a071a1d'} and
criteria = {}
以下是我在结果中看到的内容:
{u'_id': ObjectId('4eb463cb158acb554e8c9c11')}
我的结果中没有名称和 primary_key ,我错过了什么吗?
谢谢
答案 0 :(得分:12)
当您将空字典(您的criteria
变量)作为第二个参数传递时,它似乎意味着您不希望返回任何字段(除了始终返回的_id
除外)。 find()
的第二个参数定义了您想要的字段。尝试设置criteria=None
或者根本不设置criteria
。
Link到find()
的pymongo文档。
答案 1 :(得分:4)
这是由于mongodb shell如何将{}
解释为字段选择器与pymongo如何解释空字典。本质上,shell将空对象忽略为字段选择器,而pymongo将其解释为“不返回任何内容(默认值为_id
)”。
使用pymongo或mongodb shell时,您不需要指定字段选择器(您可以将其留空)。因此,shell中的这个语句:
db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{})
相当于:
db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'})
(此语句适用于shell和pymongo)