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

如何在MongoDB aggregate查询中向数组插入静态元素后展开

你之前的查询问题出在$group阶段:该操作会直接覆盖原有shops数组的内容,同时丢失原文档的_id、key等字段,无法得到预期结果。

正确的做法是通过$concatArrays操作符直接给原shops数组追加静态元素,不需要使用$group,修改后的聚合语句如下:

db.collection.aggregate([
  {
    "$match": {"key": "key1"}
  },
  {
    "$addFields": {
      "shops": {
        "$concatArrays": [
          "$shops",
          [{"shopId": "S3", "ShopName": "SN3"}]
        ]
      }
    }
  },
  {
    "$unwind": {"path": "$shops"}
  }
])

如果你使用的是MongoDB 4.2及以上版本,也可以把$addFields替换为等效的$set别名,写法保持一致即可。

逻辑说明:

  • $match阶段保留你原有逻辑,过滤出key为key1的目标文档
  • $addFields阶段不会删除原有字段,仅更新指定的shops字段:通过$concatArrays将原有shops数组和包含新静态元素的数组进行合并,实现元素追加效果
  • 最后$unwind拆分更新后的shops数组,即可得到3条拆分结果,原文档的_id、key等字段也会完整保留,完全匹配你需要的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:24:01