You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB查询student_id为5的最高考试分数的结果排序问题

解决方案

直接使用以下聚合查询即可得到你需要的结果:

var pipeline = [
    { $match: { student_id: 5 } },
    { $unwind: "$scores" },
    { $match: { "scores.type": "exam" } },
    { $sort: { "scores.score": -1 } },
    { $limit: 1 },
    { $project: { _id: 0, student_id: 1, class_id: 1, scores: 1 } }
]
var results = db.grades.aggregate(pipeline);
results.forEach(printjson)

逻辑说明

  • 第一步$match先过滤出student_id为5的所有文档,缩小查询范围
  • 第二步$unwind将嵌套的scores数组拆分,每个分数项对应一条独立的中间文档
  • 第三步新增的$match专门过滤出类型为exam的分数项,直接排除quiz、homework两类数据,不会出现其他类型分数混入排序的问题
  • 第四步对过滤后的考试分数做降序排序,分数最高的记录会排在第一位
  • 第五步用$limit仅保留排序后的第一条记录,就是你需要的最高考试分数条目
  • 最后一步$project调整输出字段,隐藏系统默认的_id字段,输出格式和你期望的完全一致

内容的提问来源于stack exchange,提问作者Sloxy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:15:01