You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C# MongoDB.Driver查询含指定值的子/孙级文档

MongoDB 多层级Id匹配查询方案

针对你需要匹配任意子级、孙级Id字段的需求,可以利用MongoDB的点符号访问嵌套字段结合$or操作符实现多条件筛选,以下是针对你提供的文档结构的具体查询实现:

假设你要匹配的目标字符串为"target-id",查询语句如下:

db.yourCollection.find({
  $or: [
    // 匹配顶级Id
    { Id: "target-id" },
    // 匹配子级Child1的ChildId
    { "Child1.ChildId": "target-id" },
    // 匹配孙级:ChildList1数组中的GrandchildId1/GrandchildId2
    { "ChildList1.GranchildList1.GrandchildId1": "target-id" },
    { "ChildList1.GranchildList1.GrandchildId2": "target-id" },
    // 匹配孙级:ChildList2第一组嵌套数组的GrandchildId3/GrandchildId4
    { "ChildList2.GranchildList2.GrandchildId3": "target-id" },
    { "ChildList2.GranchildList2.GrandchildId4": "target-id" },
    // 匹配孙级:ChildList2第二组嵌套数组的GrandchildId5/GrandchildId6
    { "ChildList2.GranchildList3.GrandchildId5": "target-id" },
    { "ChildList2.GranchildList3.GrandchildId6": "target-id" }
  ]
})

关键说明:

  • 点符号定位:MongoDB支持通过父字段.子字段的格式直接访问嵌套对象或数组内的字段,对于数组类型的字段,MongoDB会自动遍历数组中的所有元素,只要有一个元素的目标字段匹配,就会返回整个文档。
  • $or操作符:将所有需要匹配的Id字段条件放入$or数组中,只要文档满足其中任意一个条件,就会被筛选出来。

如果你的实际文档中存在字段名统一的嵌套Id(比如所有孙级Id都叫GrandchildId),可以简化条件,例如:

{ "ChildList1.GranchildList1.GrandchildId": "target-id" }

这条语句会匹配GranchildList1数组中任意元素的GrandchildId等于目标值的文档。

内容的提问来源于stack exchange,提问作者Orion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:40:02