按我的理解,我创建了一些样本数据集如下:
db.collectionName.insert([{"session" : "870922750", "id_category" : 1118, "id_subcategory" : 2453, "date_created" : ISODate("2014-12-15T12:31:55Z") },
{"session" : "870922750", "id_category" : 1118, "id_subcategory" : 2453, "date_created" : ISODate("2014-12-15T12:31:55Z") },
{"session" : "870922750", "id_category" : 1118, "id_subcategory" : 2453, "date_created" : ISODate("2014-12-16T12:31:55Z") },
{"session" : "870922751", "id_category" : 1118, "id_subcategory" : 2453, "date_created" : ISODate("2014-12-16T12:31:55Z") },
{"session" : "870922751", "id_category" : 1118, "id_subcategory" : 2454, "date_created" : ISODate("2014-12-16T12:31:55Z") }])
使用mong aggregation和每个数据集date_created
是ISODate
从这个ISODate
找出给定date
day
因此,找出日常使用$dayOfMonth汇总$project
。
聚集查询为:
db.collectionName.aggregate({
"$project": {
"id_subcategory": 1,
"session": 1,
"day": {
"$dayOfMonth": "$date_created" //find day of given ISODate
}
}
}, {
"$group": {
"_id": {
"subCategory": "$id_subcategory", //groups subCategory, session and day
"session": "$session",
"day": "$day"
},
"count": {
"$sum": 1
}
}
}, {
"$group": //this groups required to combining data
{
"_id": "$_id.subCategory",
"days": {
"$push": {
"day": "$_id.day",
"count": "$count",
"session": "$_id.session"
}
}
}
}).pretty()
你的输出产生了一些混乱,因为按我的理解,你应该要明显'id_subcategory'和组的所有'不同会话一天wise'? – Yogesh
你把它放在比我好的话:) – kleampa