微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-PyMongo-查询嵌入式文档列表

这里有一些关于此的文章,但不完全是我所追求的.

我有一个包含嵌入式文档列表的文档:

{
   "_id": 1234
   "name": "joe"
   "comments": [
       {"type": "text", "content": "my content"},
       {"type": "image", "content": "my_content"}
       {"type": "image", "content": "my_content"}
   ]

}

我想运行一个查询获取一组文档,然后希望运行辅助查询以从该初始查询集中搜索评论”列表.

例如p = db.people.find({“ some”:“ condition”}),然后搜索嵌入式文档,例如p.find({“ type”:“ image”}

这显然行不通.只是想知道是否有一种方法可以不必在父文档集合上再次运行2个单独的查询

解决方法:

如果您只想在集合中找到既满足条件又满足Comments数组中的{“ type”:“ image”}的项目,则可以在单个查询中完成:

p = db.people.find({"some": "condition", "comments.type": "image"})

有关更多信息,请参见dot notation页面.

如果您确实需要全部内容,并且对所说结果中的特定子项目感兴趣,那么我能想到的最佳方法就是将结果放入列表中,并在Python中进行检查.有任何PyMongo大师对此有话要说吗?请注意,如果您的数据集很大,那么这不是一个好主意.

p = list(db.people.find({"some": "condition"})

# A little verbose, but...
image_p = [item for item in p
           if any(comment['type'] == 'image'
                  for comment in item['comments'])]

...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐