尽管这里有类似的问题,如何在特定星期范围内查找/计数文档,但我无法找出如何匹配/计算上周的文档。考虑以下查询:
db.getCollection('post').aggregate([
{
$match: {
createdDate: {'$gte': new Date(new Date() - 7 * 60 * 60 * 24 * 1000)},
}
},
{
$group: {
_id: {$week: '$createdDate'},
count: {$sum: 1}
}
}
])
此查询对最近7天的文档进行计数,并按周数对计数进行分组-但结果实际上包含两个字段:当前周的文档数和从该天开始的上周起的文档数是当前日期-7天。
尝试再添加两个阶段,首先根据组_id即星期数对它们进行排序,然后将结果限制为1
db.getCollection('post').aggregate([
{
$match: {
createdDate: {'$gte': new Date(new Date() - 7 * 60 * 60 * 24 * 1000)},
}
},
{
$group: {
_id: {$week: '$createdDate'},
count: {$sum: 1}
}
},
{
$sort:{
_id:-1
}
},
{
$limit:1
}
])