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

如何合并不同字段的两个对象数组,将in_cart的amount插入details数组

MongoDB 合并in_cart与details数组字段实现方案

直接在$lookup关联查询的后续阶段加入$set(也可用$addFields)聚合阶段即可实现字段合并,具体代码如下:

{
  $set: {
    details: {
      $map: {
        input: {
          $zip: {
            inputs: ["$in_cart", "$details"]
          }
        },
        as: "itemPair",
        in: {
          $mergeObjects: [
            { $arrayElemAt: ["$$itemPair", 1] },
            { amount: { $arrayElemAt: ["$$itemPair", 0].amount } }
          ]
        }
      }
    }
  }
}

逻辑说明

  • $zip操作会将in_cart和details两个数组按索引位置一一配对,生成二维数组,每个子项为[对应索引的in_cart元素, 对应索引的details元素]
  • $map遍历配对后的二维数组,对每一组配对元素使用$mergeObjects合并,将in_cart中的amount字段写入对应details元素

处理后结果示例

"details":[
  {
    "_id":"12345",
    "name":"test",
    "price":1110,
    "amount":2
    // 其余原有字段保持不变
  }
]

注意:该方案依赖两个数组索引位置完全对应的前提,如果你无法保证$lookup返回的details顺序和in_cart顺序一致,可以在合并前先对两个数组按product_id/_id做排序,保证对应关系正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:06:01