MongoDB聚合多字段求和:如何将披萨字段值汇总为pizzas字段
MongoDB披萨订单字段求和生成目标文档结构
当然可以实现,以下是两种实用的处理方式:
1. 查询时计算总和(不修改原文档)
如果只需在查询时返回包含pizzas总和的结果,不改动数据库里的原文档,用聚合管道即可实现:
db.orders.aggregate([ { $project: { _id: 1, date: 1, pizzas: { $add: ["$margherita", "$hawaii", "$diavolo", "$quattro_formaggi"] } } } ])
通过$project阶段保留_id和date字段,同时用$add操作符将指定披萨字段的数值相加,生成pizzas总和字段。
2. 永久修改文档结构
如果需要让数据库中的文档直接变成目标结构,可使用聚合管道式更新(MongoDB 4.2及以上版本支持):
db.orders.updateMany( {}, // 匹配所有订单文档,如需过滤特定订单可修改此条件 [ { $set: { pizzas: { $add: ["$margherita", "$hawaii", "$diavolo", "$quattro_formaggi"] } } }, { $unset: ["margherita", "hawaii", "diavolo", "quattro_formaggi"] // 可选:移除原披萨数量字段 } ] )
$set步骤负责计算并添加pizzas总和字段;$unset步骤为可选操作,执行后会移除原来的各个披萨数量字段,让文档完全符合你期望的结构。
内容的提问来源于stack exchange,提问作者Anticro
相关产品推荐
相关产品推荐

