所以我正在尝试进行聚合查询。我的文档看起来像这样:
{
"_id": ObjectId(),
"value": [1,2],
"date": ISODate("2016-06-02T03:02:00.000Z")
},
{
"_id": ObjectId(),
"value": [1,2],
"date": ISODate("2016-06-06T03:02:00.000Z")
},
{
"_id": ObjectId(),
"value": [3,2],
"date": ISODate("2017-04-06T03:02:00.000Z")
}
我想计算相同数组value
在特定年份月发生的次数。
我通过写这个聚合得到了日期:
{
"$group":
{
'_id':
{
"$dateToString":
{
"format": "%Y-%m",
"date": "$launch_time"
}
}
}
},
{
"$sort":
{
"_id": -1
}
},
{
"$project":
{
"date": "$_id",
"_id": 0,
}
}
这给了我结果:
{'date': '2016-04'} ..so on
我已经成功计算了数组:
{
"$group":
{
"_id": "$home_coordinates",
"count":
{
"$sum": 1
}
}
}
这给了我输出:
{'_id': [1,2], 'count': 2} ..so on
如何以这样的方式组合这些2,我的结果看起来像这样?
{
"date": "2016-06",
"value": [1,2],
"count": 2
},
{
"date": "2017-04",
"value": [3,2],
"count": 1
}
因此,如何根据日期计算类似的数组?
试试这个
db.collection.aggregate([
{
$addFields:{
date:{ $substr: ["$date", 0, 10] }
}
},
{
$group:{
_id:"$date",
date:{$first:"$date"},
value:{$first:"$value"},
count:{$sum:1}
}
}
])