pymongo find() 与 mongodb find() 相比,pymongo find() 提供的有关文档的数据较少

发布于 2024-12-15 15:43:22 字数 771 浏览 0 评论 0原文

我有一个合作伙伴集合,我正在使用 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')}  

并且我不知道没有得到 nameprimary_key 结果,我错过了什么吗?

谢谢

I have a partner collection and I am using pymongo to retrieve the data
When I query the collection with MongoDB, I see the following result

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{})
{ "_id" : ObjectId("4eb463cb158acb554e8c9c11"), "unique_key" : "c89dbe313932008febde61cdd2a071a1d", "name" : "ABC", "primary_key" : 12 }  

But when I query via pymongo, here is what I do

for document in collection.find(find, criteria):
    print document  

where find = {'unique_key': 'c89dbe313932008febde61cdd2a071a1d'} and
      criteria = {}

Here is what I see in result:

{u'_id': ObjectId('4eb463cb158acb554e8c9c11')}  

and I don't get name and primary_key in result, am I missing something?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等往事风中吹 2024-12-22 15:43:22

似乎当您传递空字典(您的 criteria 变量)作为第二个参数时,这意味着您不希望返回任何字段(除了总是返回的 _id )。 find() 的第二个参数定义您想要的字段。尝试设置 criteria=None 或根本不通过 criteria

链接到 pymongo 文档对于find()

It seems that when you pass empty dictionary (your criteria variable) as the second parameter it means you want no fields returned (except _id that is always returned). The second parameter for find() defines the fields that you want. Try to set criteria=None or not pass criteria at all.

Link to the pymongo document for find().

GRAY°灰色天空 2024-12-22 15:43:22

这是由于 mongodb shell 将 {} 解释为字段选择器的方式与 pymongo 如何解释空字典的方式有关。本质上,shell 会忽略作为字段选择器的空对象,而 pymongo 将其解释为“不返回任何内容(除了默认的 _id)”。

使用 pymongo 或 mongodb shell 时不需要指定字段选择器(可以将其留空)。因此,shell中的这条语句:

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{})

相当于:(

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'})

这条语句在shell和pymongo中都有效)

This is due to how the mongodb shell interprets {} as a field selector vs. how pymongo interprets an empty dictionary. In essence, the shell ignores the empty object as a field selector, whereas pymongo is interpreting it as "return nothing (except the default of _id)".

You don't need to specify a field selector when using pymongo or the mongodb shell (you can just leave it blank). Thus, this statement in the shell:

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'},{})

is equivalent to:

db.partner.find({'unique_key': 'c89dbe313932008febde61cdd2a071a1d'})

(this statement will work in both the shell and pymongo)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文