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

MongoDB如何查询嵌套对象数组中符合多条件的指定字段值

MongoDB查询数组匹配元素指定字段方案

你所使用的查询条件{ link: "AAA", "media.src": "Test2"}本身可以正确匹配到包含符合要求元素的文档,但是MongoDB默认返回结果会保留完整的media数组,不会过滤数组内不匹配的元素,因此无法直接获取到目标update_utc_ts值,可通过以下两种方案实现需求:

方案1:使用投影$elemMatch(适合单匹配场景)

如果只需要获取第一个匹配src=Test2的媒体元素的对应值,可以直接在find查询的投影参数中使用$elemMatch过滤数组:

db.your_collection_name.find(
  // 查询条件
  { link: "AAA" },
  // 投影配置,只返回匹配的media元素的update_utc_ts
  {
    _id: 0,
    media: { $elemMatch: { src: "Test2" } },
    "media.update_utc_ts": 1
  }
)

返回结果示例:

{ "media" : [ { "update_utc_ts" : "2021-11-04 23:23:30.315" } ] }

注意:该方案只会返回数组中第一个匹配条件的元素,若存在多个匹配元素需要全部返回,请使用方案2

方案2:使用聚合管道(适合多匹配/复杂处理场景)

通过聚合管道的展开、二次过滤步骤,可以返回所有匹配元素的对应字段值:

db.your_collection_name.aggregate([
  // 第一步:过滤出link为AAA的文档,缩小处理范围
  { $match: { link: "AAA" } },
  // 第二步:展开media数组,每个数组成员拆分为独立文档
  { $unwind: "$media" },
  // 第三步:过滤出src为Test2的media条目
  { $match: { "media.src": "Test2" } },
  // 第四步:自定义返回字段,只保留目标时间值
  { $project: {
    _id: 0,
    target_update_utc_ts: "$media.update_utc_ts"
  }}
])

返回结果示例:

{ "target_update_utc_ts" : "2021-11-04 23:23:30.315" }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:06:01