【发布时间】:2020-04-20 17:54:10
【问题描述】:
在 mongo 项目集合中有这样的数据:
> db.items.find()
{ "_id" : ObjectId("5e9d57f8b018eecfd91c785a"), "customer_id" : 1, "goods_id" : 10, "op_code" : 1, "op_value" : 5 }
{ "_id" : ObjectId("5e9d57f8b018eecfd91c785b"), "customer_id" : 1, "goods_id" : 10, "op_code" : 1, "op_value" : 2 }
{ "_id" : ObjectId("5e9d57f8b018eecfd91c785c"), "customer_id" : 1, "goods_id" : 10, "op_code" : 2, "op_value" : 5 }
“op_code”字段代表加减运算(值为1表示加运算,2表示减),“op_value”字段为绝对值。如何按“customer_id”和“goods_id”字段计算“op_value”组的总价值。
想要的结果如下:
# "total" field stands for sum of "op_value", "op_code" value 1 is plus while 2 is minus.
{ "_id" : { "customer_id" : 1, "goods_id" : 10}, "total" : 2 } # 5 + 2 - 5
mongo 版本为:3.2.12
谢谢。
【问题讨论】:
-
您必须使用聚合管道
$group阶段和$sum运算符,如文档示例中所示:Calculate Count, Sum, and Average。您可以根据您的情况按多个字段分组。
标签: mongodb aggregation