所以我正在尝试进行聚合查询。我有如下文件:
{
"_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
如何以这样的方式组合这两个结果?
{
"date": "2016-06",
"value": [1,2],
"count": 2
},
{
"date": "2017-04",
"value": [3,2],
"count": 1
}
因此,如何根据日期计算相似的数组?
答案 0 :(得分:0)
尝试一下
db.collection.aggregate([
{
$addFields:{
date:{ $substr: ["$date", 0, 10] }
}
},
{
$group:{
_id:"$date",
date:{$first:"$date"},
value:{$first:"$value"},
count:{$sum:1}
}
}
])