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

如何从MongoDB集合的数组字段中提取指定位置的嵌套属性值

可以实现,以下是两种常用实现方案

方案1:普通find查询(返回轻度嵌套结构)

直接在投影参数中指定数组下标对应字段,关闭不需要的字段返回即可:

// 下标1对应data数组的第二个元素,_id:0表示不返回默认的_id字段
db.collection.find({}, { "data.1.payload.value": 1, _id: 0 })

返回结果示例:

{ "data" : [ { "payload" : { "value" : -10 } } ] }

方案2:聚合查询(直接返回目标值,无多余嵌套)

如果需要直接拿到扁平化的数值结果,使用聚合管道的数组操作符实现:

MongoDB 4.4及以上版本(使用$getField)

db.collection.aggregate([
  {
    $project: {
      _id: 0,
      targetValue: {
        $getField: {
          field: "value",
          input: {
            $getField: {
              field: "payload",
              input: { $arrayElemAt: ["$data", 1] }
            }
          }
        }
      }
    }
  }
])

低版本MongoDB兼容方案(使用$let)

db.collection.aggregate([
  {
    $project: {
      _id: 0,
      targetValue: {
        $let: {
          vars: { elem: { $arrayElemAt: ["$data", 1] } },
          in: "$$elem.payload.value"
        }
      }
    }
  }
])

以上两种聚合方案返回结果均为:

{ "targetValue" : -10 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:24:06