Mongodb总和与众不同

时间:2017-12-01 21:55:05

标签: javascript mongodb mongoose

文档结构

    {
        "_id": "5a21c5dff772de0555480ef5",
        "date": "2017-10-06T00:00:00.000Z",
        "amount": 1,
        "location": "Canada",
        "__v": 0
    }

我想计算每个位置的金额,结果的输出类似于:

{
  "location": "Canada",
  "amount": 8
}

请给我一些提示,说明如何为此构建聚合查询(或者还有其他方法可以做到这一点)。

1 个答案:

答案 0 :(得分:0)

这听起来像是aggregation的工作。

使用$group阶段和$sum运算符按位置合并文档:

db.collection.aggregate([{$group:{_id:"$location", amount: {$sum: "$amount"}])

如果您必须将该字段命名为“location”,请使用$project阶段将“_id”更改为“location”:

db.collection.aggregate([
     {$group:{_id:"$location", amount: {$sum: "$amount"}}},
     {$project: {location: "$_id", amount:1, _id:0}}
])