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

如何使用MongoDB聚合管道提取子文档的指定字段值到数组?

MongoDB聚合管道提取tier字段为数组的解决方案

针对你的需求——从customer集合中提取tier_and_details下所有子文档的tier值组成数组,可以通过MongoDB聚合管道的$objectToArray和$map操作符实现,具体方案如下:

聚合管道代码

db.customer.aggregate([
  {
    $project: {
      _id: 0,
      tiers: {
        $map: {
          input: { $objectToArray: "$tier_and_details" },
          as: "entry",
          in: "$$entry.v.tier"
        }
      }
    }
  }
])

步骤解析

  1. $objectToArray转换对象为数组
    由于tier_and_details的键是动态生成的字符串(如c06d340a4bad42c59e3b6665571d2907),无法直接通过固定路径遍历,使用$objectToArray会将该对象转换为[{k: "键名", v: 子文档}, ...]格式的数组,让我们能统一处理每个子文档。

  2. $map提取tier值
    遍历转换后的数组,通过$$entry.v获取每个子文档,再提取其中的tier字段值,最终生成目标数组。

  3. $project过滤输出字段
    仅保留生成的tiers数组,排除_id及其他无关字段,得到干净的结果。

执行结果

运行上述聚合命令后,将得到预期输出:

["Platinum","Bronze","Gold"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:12:47