MongoDB查询find()可选参数用法:如何将isBoosted=True的用户优先返回
实现指定条件文档优先排序的MongoDB查询参数
你需要使用find()方法的sort可选参数完成该需求。
实现逻辑
MongoDB对布尔值进行排序时,默认true的排序优先级高于false,因此直接对isBoosted字段做倒序排列,即可让所有isBoosted = True的用户排在结果最前列:
// 基础查询写法 db.userCollection.find().sort({ isBoosted: -1 })
如果需要在同优先级的用户中叠加其他排序规则,可直接在sort参数内追加字段即可,比如同是boosted的用户按注册时间倒序排列:
// 叠加次级排序规则 db.userCollection.find().sort({ isBoosted: -1, registerTime: -1 })
复杂场景拓展
如果涉及多条件权重排序,可配合聚合查询实现更灵活的排序逻辑:
db.userCollection.aggregate([ // 新增临时权重字段,isBoosted为true权重更高 { $addFields: { sortWeight: { $cond: [{ $eq: ["$isBoosted", true] }, 10, 0] } } }, // 按权重倒序 { $sort: { sortWeight: -1 } }, // 移除返回结果中的临时权重字段 { $project: { sortWeight: 0 } } ])
内容的提问来源于stack exchange,提问作者bd_28
相关产品推荐
相关产品推荐

