MongoDB聚合管道中如何重命名字段?避免全量指定字段
MongoDB聚合管道中重命名字段的高效方法
当需要在聚合管道中重命名字段但又不想手动列出所有其他字段时,有两种更高效的方案:
方案一:$addFields + $unset组合(兼容所有MongoDB版本)
先通过$addFields新增目标字段并赋值为原字段的值,再用$unset移除原字段,所有原有字段都会被保留:
[ // ... 其他聚合阶段 { $addFields: { sale: "$sales" } }, { $unset: "sales" } ]
方案二:$rename聚合阶段(MongoDB 4.2+)
MongoDB 4.2及以上版本提供了专门的$rename阶段,直接指定原字段名和新字段名即可完成重命名,自动保留所有其他字段,写法更简洁:
[ // ... 其他聚合阶段 { $rename: { "sales": "sale" } } ]
额外说明
$rename同样支持嵌套字段的重命名,比如要重命名嵌套在info下的sales字段,可以这样写:
{ $rename: { "info.sales": "info.sale" } }
内容的提问来源于stack exchange,提问作者GhostOrder
相关产品推荐
相关产品推荐

