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

如何通过MongoDB查询指定文档数组中符合条件的元素?

无需循环实现MongoDB文档查询与数组筛选

完全可以通过MongoDB查询语句直接实现你的需求,不需要手动循环处理数组。以下是两种常用方案:

方案一:find查询结合投影筛选

适合仅需返回目标文档并过滤tickets数组的场景,直接在投影阶段使用$filter操作符:

db.collection.find(
  { title: "some movie" },
  { 
    title: 1,
    tickets: {
      $filter: {
        input: "$tickets",
        cond: { $eq: ["$$this.isSold", true] }
      }
    }
  }
)
  • 第一个参数{ title: "some movie" }用于匹配目标文档
  • 第二个参数通过投影规则,保留title字段,并使用$filter筛选tickets数组中isSold为true的元素

方案二:聚合管道实现

如果需要更复杂的后续数据处理,推荐使用聚合管道:

db.collection.aggregate([
  { $match: { title: "some movie" } },
  {
    $addFields: {
      tickets: {
        $filter: {
          input: "$tickets",
          cond: { $eq: ["$$this.isSold", true] }
        }
      }
    }
  }
])
  • 第一步$match精准定位到title匹配的文档
  • 第二步$addFields替换原tickets字段为筛选后的结果,保留文档其他原有字段(如果需要)

两种方案均由MongoDB引擎内部处理数组筛选逻辑,无需编写额外循环代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:22:33