此mongodb中的文档具有属性createdAt = Date.now()
,它是纪元时间以及属性userid
和name
。
所需要的是name='abc'
的文档数量,这些文档的数量少于或等于4个月前,但是计算由同一userId创建并在同一天创建的文档。
最好的方法是什么?聚合或地图或组合或......
答案 0 :(得分:0)
您可以尝试以下聚合。
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
}
}
}]);