0
此mongodb中的文檔具有屬性createdAt = Date.now()
,這是時代以及屬性userid
和name
。
需要的是name='abc'
創建的文檔數量少於或等於4個月前,但需要統計由同一個userId創建的同一天創建的文檔的數量。
最好的辦法是什麼?聚合或地圖或組合或...某些文檔組的組數
此mongodb中的文檔具有屬性createdAt = Date.now()
,這是時代以及屬性userid
和name
。
需要的是name='abc'
創建的文檔數量少於或等於4個月前,但需要統計由同一個userId創建的同一天創建的文檔的數量。
最好的辦法是什麼?聚合或地圖或組合或...某些文檔組的組數
您可以嘗試下面的聚合。
var date = new Date(Date.UTC(2017, 2, 3, 0, 0, 0));
date.setMonth(date.getMonth() - 4);
db.collection.aggregate([{
$match: {
createdAt: {
$gte: date,
$lte: new Date(Date.UTC(2017, 2, 3, 0, 0, 0))
},
name: "abc"
}
}, {
$group: {
_id: {
date: {
$dayOfMonth: "$createdAt"
},
month: {
$month: "$createdAt"
},
year: {
$year: "$createdAt"
},
userid: "$userid"
},
count: {
$sum: 1
}
}
}]);
我得到ISODate未在服務器控制檯上定義。我在澳大利亞,不知道這是否有任何區別.. –
更新爲使用JavaScript日期對象。看看它是否有幫助 – Veeram