在MongoDB中可以使用聚合管道来按日期分组后再按子组进行聚合查询。下面是一个示例代码,演示如何进行此类查询:
db.collection.aggregate([
// 第一步:按日期分组
{
$group: {
_id: {
year: { $year: "$date" },
month: { $month: "$date" },
day: { $dayOfMonth: "$date" }
},
count: { $sum: 1 }
}
},
// 第二步:按子组进行聚合
{
$group: {
_id: "$_id.year",
data: {
$push: {
month: "$_id.month",
day: "$_id.day",
count: "$count"
}
}
}
}
])
在上面的代码中,假设要对一个名为collection
的集合进行查询,集合中的每个文档都有一个日期字段date
。首先,使用$group
操作符按日期进行分组,将日期字段拆分为年、月和日,并计算每组的数量。然后,再次使用$group
操作符按年进行分组,将每年的数据以数组形式存储在data
字段中。
这样,就可以按日期分组后再按子组进行聚合查询。你可以根据你的具体需求进行修改和调整聚合管道的操作符。
上一篇:按日期分组和重命名
下一篇:按日期分组会产生错误的结果