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

MongoDB聚合查询:基于嵌套数组条件提取指定对象

MongoDB聚合查询实现指定条件提取

针对你提供的集合结构,要提取满足list1._id = "54"和list2.lang = "IT"的{"id": "54", "value": "val3"},可以使用以下聚合管道:

db.collection.aggregate([
  // 展开list1数组,将每个元素转为独立文档
  { $unwind: "$list1" },
  // 筛选出list1._id为"54"的文档
  { $match: { "list1._id": "54" } },
  // 展开list2数组,处理内部语言条目
  { $unwind: "$list1.list2" },
  // 筛选出lang为"IT"的条目
  { $match: { "list1.list2.lang": "IT" } },
  // 构造目标输出结构
  {
    $project: {
      _id: 0,
      id: "$list1._id",
      value: "$list1.list2.value"
    }
  }
])

步骤说明:

  • $unwind: 先展开外层的list1数组,让每个list1元素成为单独的文档,方便后续匹配。
  • $match: 过滤出list1._id等于"54"的文档,缩小处理范围。
  • $unwind: 展开当前文档的list2数组,让每个语言条目独立出来。
  • $match: 进一步筛选出lang为"IT"的条目。
  • $project: 重新定义输出字段,将list1._id重命名为id,提取list2.value,同时排除默认的_id字段。

执行上述聚合查询后,就能得到你需要的结果:

{ "id": "54", "value": "val3" }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:01:06