如何过滤MongoDB中to_do数组含Pulse的嵌套结构文档
MongoDB嵌套数组文档过滤方案
针对你这种数组→对象→数组的嵌套结构,要筛选出chapters数组中存在对象的to_do数组包含"Pulse"的文档,不需要复杂的$elemMatch,直接用MongoDB的点符号穿透查询即可。
核心查询语句
db.your_collection_name.find({ "chapters.to_do": "Pulse" })
原理说明
MongoDB的点符号支持穿透嵌套的数组和对象:
chapters是顶层数组,点符号会遍历数组里的每一个对象元素.to_do指向每个chapter对象中的数组,查询条件"Pulse"会检查该数组是否包含目标值- 只要有任意一个chapter对象的
to_do数组包含"Pulse",整个文档就会被匹配返回
复杂场景扩展(可选)
如果需要同时匹配chapter对象的其他字段(比如指定team_oid),再用$elemMatch组合多条件:
db.your_collection_name.find({ chapters: { $elemMatch: { team_oid: "62754ff055aa93f004befb2c", to_do: "Pulse" } } })
这个查询只会返回那些存在某个chapter对象,同时满足team_oid匹配且to_do包含Pulse的文档。
内容的提问来源于stack exchange,提问作者Izzi
相关产品推荐
相关产品推荐

