Giv*_*ivP 4 python mongodb pymongo
这里有一些关于此的帖子,但不完全是我所追求的。
我有一个包含嵌入文档列表的文档:
{
"_id": 1234
"name": "joe"
"comments": [
{"type": "text", "content": "my content"},
{"type": "image", "content": "my_content"}
{"type": "image", "content": "my_content"}
]
}
Run Code Online (Sandbox Code Playgroud)
我想运行一个查询来获取一组文档,然后我希望运行辅助查询来从该初始查询集中搜索“评论”列表。
例如p = db.people.find({"some":"condition"}),然后搜索嵌入式文档,例如p.find({"type":"image"}
这显然是行不通的。只是想知道是否有一种方法可以做到这一点,而不必再次对父文档集合运行 2 个单独的查询?
如果您只想查找集合中满足给定条件并且在数组中也满足的项目,您可以在单个查询中执行此操作:{"type": "image"}comments
p = db.people.find({"some": "condition", "comments.type": "image"})
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅点符号页面。
如果您确实需要整个内容,并且您对所述结果中的特定子项感兴趣,那么我能想到的最好方法就是将结果放入列表中,然后在 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'])]
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5163 次 |
| 最近记录: |