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

如何将子文档转换为字段名数组?MongoDB聚合实现方案

MongoDB聚合中获取对象键的方法
  • MongoDB 4.4及以上版本:直接用$keys操作符
    这个操作符和JavaScript里的Object.keys()功能完全对应,能直接提取对象的键组成数组。
    假设有文档:{ data: { A: 1, B: 2 } },对应的聚合管道示例:

    db.collection.aggregate([
      {
        $project: {
          keys: { $keys: "$data" }
        }
      }
    ])
    

    执行后会输出包含keys: ["A", "B"]的结果文档。

  • MongoDB 3.4至4.2版本:通过$objectToArray提取
    先使用$objectToArray将目标对象转换为{ k: 键名, v: 键值 }结构的数组,再提取所有k字段即可:
    分步实现的管道:

    db.collection.aggregate([
      { $project: { keyArray: { $objectToArray: "$data" } } },
      { $project: { keys: "$keyArray.k" } }
    ])
    

    也可以用$map一步完成转换:

    db.collection.aggregate([
      {
        $project: {
          keys: {
            $map: {
              input: { $objectToArray: "$data" },
              in: "$$this.k"
            }
          }
        }
      }
    ])
    

    两种写法最终都能得到和Object.keys()一致的键数组结果。

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:25:05