如何求和数据库中的字段

How sum a field in a database

我正在尝试将具有相同事件名称的所有字段分组,并对这些字段的参与者求和。

{
    "_id": {
        "$oid": "54b6ae8aec17b5e905a5813a"
    },
    "person": {
        "name": "Something",
        "phone": "(011) 9468-1319",
        "email": "myemail@gmail.com",
        "obs": ""
    },
    "event": {
        "full": "20/11/01 Classic",
        "date": "20/11/01",
        "name": "Special",
        "participants": 10
    },
    "__v": 0
}
{
    "_id": {
        "$oid": "54b6aeaad7e410ec05dd1ca2"
    },
    "person": {
        "name": "Something",
        "phone": "(011) 9468-1319",
        "email": "myemail@gmail.com",
        "obs": ""
    },
    "event": {
        "full": "20/11/01 Classic",
        "date": "20/11/01",
        "name": "Special",
        "participants": 10
    },
    "__v": 0
}

我只有这两个集合,我正在使用以下代码按 event.full 进行分组,然后对参与者(数字)字段求和。

这是代码:

MyModel.aggregate(
    [
        { "$group": 
            { 
                _id: "$event.full",
                participants: { "$sum": "$participants" },
                count: { $sum: 1 }
            } 
        },
        { "$skip": ( page-1 ) * 15 },
        { "$limit": 15 }
    ],
    function(err, obj) {
        res.send(obj);
    }
);

这将返回以下对象:

[
 {
  _id: "20/11/01 Classic",
  participants: 0,
  count: 2
 }
]

为什么总和字段不起作用?怎么修??

你错过了 event 使用这个:

[
        { "$group": 
            { 
                _id: "$event.full",
                participants: { "$sum": "$event.participants" },
                count: { $sum: 1 }
            } 
        },
        { "$skip": ( page-1 ) * 15 },
        { "$limit": 15 }
 ]