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

MongoDB聚合$project阶段如何批量复制字段并设置新值?

MongoDB聚合$project阶段批量处理嵌套字段并添加自定义后缀

如果你不想手动逐个写出suggest_foo下的所有字段,想批量提取并给每个字段值加上自定义后缀,可以用MongoDB的$objectToArray、$map和$arrayToObject组合实现,具体聚合代码如下:

fooSchema.aggregate([
  // 其他聚合阶段...
  {
    $project: {
      processedFields: {
        $arrayToObject: {
          $map: {
            input: { $objectToArray: "$suggest_foo" },
            as: "item",
            in: {
              k: "$$item.k",
              v: { $concat: ["$$item.v", " maybe you like"] }
            }
          }
        }
      }
    }
  },
  // 将处理后的字段提升到根层级
  {
    $replaceRoot: { newRoot: "$processedFields" }
  }
])

代码逻辑说明:

  • $objectToArray: "$suggest_foo":把嵌套对象suggest_foo转成[{k: "foo1", v: "Foo1"}, ...]格式的键值对数组
  • $map:遍历数组,对每个元素的字段值用$concat拼接指定后缀
  • $arrayToObject:把处理后的数组重新转回对象格式
  • $replaceRoot:将处理后的对象设为文档根结构,得到目标输出

执行后会生成你期望的结果:

{
  foo1: 'Foo1 maybe you like',
  foo2: 'Foo2 maybe you like',
  foo3: 'Foo3 maybe you like',
  foo4: 'Foo4 maybe you like',
  foo5: 'Foo5 maybe you like',
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:32:30