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

如何将MongoDB旧文档替换为code字段数组化的新文档?

MongoDB批量合并文档并替换旧数据

现有文档结构

{ user: '123', code: 'abc', uses: [...] },
{ user: '123', code: 'def', uses: [...] },

目标文档结构

希望将同user的文档合并,把单个值的code字段改为数组,合并后结构如下:

{ user: '123', code: ['abc', 'def'], uses: [...] },

聚合尝试过程

最初的错误尝试

使用以下聚合语句时,仅能将code转为单元素数组,无法合并同user的多条记录:

schema.aggregate([
    { $unwind: '$uses' },
    { $group: { _id: '$_id', user: { $first: '$user' }, code: { $addToSet: '$code' }, uses: { $addToSet: '$uses' } } }
]);

调整后的正确聚合

修改分组键为user后,得到了符合预期的结果:

[
    { $unwind: '$uses' },
    { $group: { _id: '$user', code: { $addToSet: '$code' }, uses: { $addToSet: '$uses' } } }
]

问题出在原语句以_id分组(每个文档_id唯一,无法合并同user数据),改为以user分组后,成功将同user的code合并为数组,同时完成uses的去重合并。

当前需求

已通过聚合得到正确的新文档结构,现有400+旧文档需要批量替换,不想手动操作,如何用聚合结果替换数据库中的旧文档?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:30:16