按我的理解,我創建了一些樣本數據集如下:
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