在MongoDB中,可以使用聚合操作来按照created_at
字段进行聚合,并返回今天和昨天的数据。下面是一个解决方法的代码示例:
var today = new Date();
today.setHours(0, 0, 0, 0); // 设置时间为当天的开始时间
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
yesterday.setHours(0, 0, 0, 0); // 设置时间为昨天的开始时间
db.collection.aggregate([
{
$match: {
created_at: {
$gte: yesterday,
$lt: today
}
}
},
{
$group: {
_id: null,
today: {
$sum: {
$cond: [{ $gte: ["$created_at", today] }, 1, 0]
}
},
yesterday: {
$sum: {
$cond: [
{
$and: [
{ $lt: ["$created_at", today] },
{ $gte: ["$created_at", yesterday] }
]
},
1,
0
]
}
}
}
}
])
以上代码示例中,首先使用$match
操作符过滤出created_at
字段大于等于昨天且小于今天的数据。然后使用$group
操作符进行聚合操作,将结果分组为一个文档。在分组文档中使用$sum
操作符对满足条件的数据进行求和。在$sum
操作符中使用$cond
操作符来判断created_at
字段的值是否大于等于今天或者大于等于昨天,从而分别计算出今天和昨天的数据量。
请注意,以上代码示例中的db.collection
需要替换为实际的集合名称。另外,created_at
字段的数据类型应为MongoDB支持的日期类型。
上一篇:ANCOVA中多项式项的事后检验