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

MongoDB如何按指定条件筛选并返回匹配的嵌套文档数据

MongoDB嵌套数组条件过滤查询方案

你可以通过MongoDB的**聚合管道(Aggregation Pipeline)**实现需求,具体查询语句如下:

db.collection.aggregate([
  // 第一步:匹配根文档的过滤条件
  {
    $match: {
      basic_column: "lorem ipsum"
    }
  },
  // 第二步:过滤embededData数组中符合时间要求的元素
  {
    $addFields: {
      embededData: {
        $filter: {
          input: "$embededData",
          as: "item",
          cond: {
            $and: [
              // 时间大于2020年1月1日0点
              { $gt: ["$$item.date", ISODate("2020-01-01T00:00:00Z")] },
              // 时间小于2022年1月1日0点
              { $lt: ["$$item.date", ISODate("2022-01-01T00:00:00Z")] }
            ]
          }
        }
      }
    }
  }
])

逻辑说明

  • $match阶段:先筛选出根文档中basic_column等于lorem ipsum的所有符合条件的文档,提前缩小查询范围提高执行效率。
  • $addFields阶段:保留原有所有字段的同时,对embededData数组做重写,通过$filter操作符遍历数组的每一个元素,仅保留符合时间区间要求的元素。

如果你不需要保留根文档的其他字段,也可以把$addFields替换为$project手动指定返回的字段列表,效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:54:05