当前位置 : 主页 > 网页制作 > Nodejs >

node.js – Mongoose聚合输出格式

来源:互联网 收集:自由互联 发布时间:2021-06-16
我的聚合中有以下管道: $group: { _id: { $dateToString: { format: '%Y-%m-%d', date: '$created_at' } }, num: { $sum: 1 }} 这将返回按数据分组的文档总和,如下所示: [ { "_id": "2015-04-21", "num": 1871 }] 现在我想
我的聚合中有以下管道:

$group: {
    _id: {
        $dateToString: {
            format: '%Y-%m-%d',
            date: '$created_at'
        }
    },
    num: {
        $sum: 1
    }
}

这将返回按数据分组的文档总和,如下所示:

[
    {
        "_id": "2015-04-21",
        "num": 1871
    }
]

现在我想将输出更改为这样的:

[
    ["2015-04-21", 1871]
]

这在聚合管道中是否可行?或者我是否必须编写自己的转换方法?

您可以在管道中使用 $addToSet$setUnion运算符,如下所示:

db.collection.aggregate([
    {
        "$group": {
            "_id": {
                "$dateToString": {
                    "format": "%Y-%m-%d",
                    "date": "$created_at"
                }
            },
            "num": {
                "$sum": 1
            }
        }
    },
    {
        "$group": {
            "_id": "$_id",
            "A": {
                "$addToSet": "$_id"
            },
            "B": {
                "$addToSet": "$num"
            }
        }
    },
    {
        "$project": {
            "_id": 0,
            "finalArray": {
                "$setUnion": [ "$A", "$B" ]
            }
        }
    }
]);

输出:

/* 0 */
{
    "result" : [ 
        {
            "finalArray" :  ["2015-04-21", 1871]
        }
    ],
    "ok" : 1
}
网友评论