如何在MongoDB中查询指定empno对应的points字段最大值
MongoDB指定员工最高积分查询实现方案
你可以通过以下两种常用方式实现需求,你可以根据自己的使用场景选择:
方式一:使用聚合管道查询(推荐用于统计类场景)
通过$match先筛选指定员工的所有记录,再用$max聚合算子直接计算最大积分值:
// 替换emp_points为你的实际集合名,empno的取值替换为你要查询的员工编号 db.emp_points.aggregate([ // 过滤出目标员工的所有记录 { $match: { empno: 6000 } }, // 统计最大积分 { $group: { _id: null, max_points: { $max: "$points" } } } ])
返回结果中max_points字段就是该员工的最高积分,你示例中查询6000员工时返回值为80。如果需要直接拿到数值,可以直接取结果数组的第一个元素的max_points属性即可。
方式二:使用排序+取第一条实现(写法更简单)
把目标员工的记录按积分降序排序,取第一条就是最高积分的记录:
// 替换emp_points为你的实际集合名,empno的取值替换为你要查询的员工编号 db.emp_points.find( { empno: 6000 }, { points: 1, _id: 0 } // 只返回points字段,不需要返回_id ).sort({ points: -1 }).limit(1)
如果该员工没有任何记录,两种方式都会返回空结果,你可以根据业务需要自行添加默认值处理逻辑。
内容的提问来源于stack exchange,提问作者techshot nextgen
相关产品推荐
相关产品推荐

