MongoDB嵌套分组查询受阻求助:如何按州按年份聚合学期日期数据
你可以使用MongoDB的聚合管道实现嵌套分组需求,具体查询语句如下:
db.collection.aggregate([ // 按【州+年份】联合分组,归集同分组下的学期和日期范围数据 { $group: { _id: { state: "$state", year: "$year" }, data: { $push: { term: "$term", dateRange: "$dateRange" } } } }, // 调整字段结构,把_id内的属性抽为顶层字段 { $project: { _id: 0, state: "$_id.state", year: "$_id.year", data: 1 } }, // 按州二次分组,归集同州的所有年份数据 { $group: { _id: "$state", termdates: { $push: { year: "$year", data: "$data" } } } }, // 调整最终输出结构,匹配需求格式 { $project: { _id: 0, state: "$_id", termdates: 1 } } ])
如果需要保证输出的排序规则,可在对应阶段插入$sort:
- 要让同一年份下的学期按数字升序排列:在第一个
$group阶段前添加{ $sort: { term: 1 } } - 要让同一州下的年份按时间升序排列:在第二个
$group阶段前添加{ $sort: { year: 1 } }
内容的提问来源于stack exchange,提问作者Dargha Patel
相关产品推荐
相关产品推荐

