使用$ group stage和$ sum运算符进行聚合

时间:2016-08-02 11:32:47

标签: node.js mongodb mongoose mongodb-query aggregation-framework

我想使用聚合和组阶段对所有“总”字段值求和。 我的代码和文件在这里

文件

{
    "_id": "57a068477b2l51ec16eb7das",
    "userID":"5742c6eedsaadsd93573e",
    "profileID":"5742aee49adv520593573c",
    "date": 1470130247779,
    "updateDate": 1470130361342,
    "total": 2
}
{
    "_id": "57a068477b2l51ec16eb983",
    "userID":"5742c6eedsaadsd93573e",
    "profileID":"5742aee49adv520593573c",
    "date": 1470130247779,
    "updateDate": 1470130361342,
    "total": 1
}

我在下面查询“总计”值的获取总和

    RecallProfile.aggregate([
        {
            "$match": {
                "updateDate": {
                    "$gte": from, "$lte": to
                }
            }
        },
        {
            $group: {
                "_id": "$updateDate",
                "totalRecord": {"$sum": "$total"}
            }
        }
    ], function (err, result) {
        if (err) {
            console.log('error ', err);
            res.sendStatus(500);
        } else {
            console.log("result", result);
            res.sendStatus(200);
        }
    })

给出“result []”日志。

1 个答案:

答案 0 :(得分:0)

我试过了,它正在发挥作用。看起来问题是来自和来。在聚合$ match管道中,我们需要与field具有相同的类型。当我们获得字符串形式的快速请求查询时,您需要parseInt()个变量。

"$match": {
    "updateDate": {
        "$gte": parseInt(from), "$lte": parseInt(to)
    }
}