Node.js Mongoose聚合输出格式
我的聚合中有以下管道:Node.js Mongoose聚合输出格式,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我的聚合中有以下管道: $group: { _id: { $dateToString: { format: '%Y-%m-%d', date: '$created_at' } }, num: { $sum: 1 } } 这将返回按数据分组的文档的总和,如下所示: [ { "_id": "2015-04-21", "num": 1
$group: {
_id: {
$dateToString: {
format: '%Y-%m-%d',
date: '$created_at'
}
},
num: {
$sum: 1
}
}
这将返回按数据分组的文档的总和,如下所示:
[
{
"_id": "2015-04-21",
"num": 1871
}
]
现在我想将输出更改为如下内容:
[
["2015-04-21", 1871]
]
这在聚合管道中可行吗?或者我必须编写自己的转换方法吗?您可以在管道中使用and运算符,如下所示:
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
}
这正是我想要的,mongo的功能给我留下了深刻的印象。@woutru\u确实,还有一个操作可以做同样的事情,尽管速度较慢,因为它使用本机JavaScript函数进行映射和reduce操作。也许这是一个完全独立的问题,但假设我的模式如下所示:。是否可以先通过
searchId
对其进行分组,然后再通过在
处创建的对其进行分组?类似这样的问题:@woutru\be如果你能把它作为一个新问题发布,那就太好了,因为它很有趣。不要忘记在问题中包含一些示例文档和预期结果。我将链接到帮助我解决此问题的答案:。基本上,使用多个组可以让我获得该输出。