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'])]

...

相关文章

MongoTemplate 是Spring Data MongoDB 中的一个核心类,为 S...
笔者今天要分享的是一个项目重构过程中如何将数据库选型由原...
mongodb/mongoTemplate.upsert批量插入更新数据的实现
进入官网下载官网安装点击next勾选同意,点击next点击custom...
头歌 MongoDB实验——数据库基本操作
期末考试复习总结