如何在Mongoose中查询仅含userName和score的排序列表?
解决方法
你可以通过Mongoose的**投影(Projection)**功能指定只返回需要的字段,有几种简洁的实现方式:
方式1:在find()方法中传入投影参数
直接在find()的第二个参数里列出要保留的字段,用空格分隔;如果不需要_id,可以添加-_id排除它:
const subs = await Sub.find({}, 'userName score -_id').sort({ score: 'desc' });
方式2:使用对象形式定义投影
用键值对明确标记需要包含(值为1)或排除(值为0)的字段,__v会自动被排除:
const subs = await Sub.find({}, { userName: 1, score: 1, _id: 0 }).sort({ score: 'desc' });
方式3:使用select()链式调用
通过select()单独指定投影规则,可读性更强:
// 字符串形式 const subs = await Sub.find().select('userName score -_id').sort({ score: 'desc' }); // 对象形式 const subs = await Sub.find().select({ userName: 1, score: 1, _id: 0 }).sort({ score: 'desc' });
以上三种方式都能让查询结果仅保留userName和score字段,同时保持按score降序排序的逻辑。
内容的提问来源于stack exchange,提问作者broken heart
相关产品推荐
相关产品推荐

