MongoDB按grade分组取最大range与平均score、去重genre查询咨询
MongoDB两类查询解决方案
一、按grade分组的聚合查询
报错原因
原有语句的错误有两点:
- 嵌套字段路径错误:你要取的是
info下的range字段,但是语句里写的是$info,实际应该写$info.range - 语法错误:
$max对应的配置项缺少闭合大括号
正确聚合语句
collection.aggregate([ { $group: { _id: "$grade", highest_range: { $max: "$info.range" }, average_score: { $avg: "$score" } } }, // 可选:添加以下阶段可以直接输出和你期望格式完全一致的结果 { $project: { _id: 0, grade: "$_id", highest_range: 1, average_score: { $round: ["$average_score", 1] } // 保留1位小数,匹配示例输出 } } ])
二、genre字段去重查询
直接调用MongoDB的distinct方法即可,注意嵌套字段路径要写全:
collection.distinct("info.genre")
返回结果为所有info.genre的去重值组成的数组。
内容的提问来源于stack exchange,提问作者Newbielp
相关产品推荐
相关产品推荐

