MongoDB多条件排序:用户集合的排序方法问询
MongoDB多条件排序实现指南
针对你的user集合,多条件排序其实很好上手——核心就是按字段优先级依次指定排序规则(升序用1、降序用-1),MongoDB会先按第一个字段完成分组排序,同组内再用第二个字段细化排序,以此类推。
我给你几个贴合你数据场景的实用示例:
示例1:优先展示在线用户,再按点赞数、分数降序
如果想把在线(online=1)的用户放在最前面,在线用户里点赞数(like)越高越靠前,相同点赞数的再看分数(score)高的在前,查询语句如下:
db.user.find().sort({ online: -1, like: -1, score: -1 })
online: -1:降序排序,让online=1的用户排在online=0的前面(因为1>0,降序时大值优先)like: -1:同在线状态的用户,按点赞数从高到低排列score: -1:点赞数相同的用户,按分数从高到低排列
示例2:按分数升序,再按点赞数降序
如果想先把分数低的用户放前面,分数相同的用户按点赞数高的优先,用这个语句:
db.user.find().sort({ score: 1, like: -1 })
score: 1:升序排序,score=0的用户会排在score=1的用户前面like: -1:分数相同的用户,点赞数高的排在前面
关键注意点
- 排序字段的顺序决定优先级:左边的字段先生效,只有当左边字段值完全相同时,才会触发右边字段的排序逻辑
- 缺失字段的处理:如果像你示例里
_id=7这样缺失score字段的文档,MongoDB会将其视为值为null,升序时会排在最前面,降序时排在最后面
内容的提问来源于stack exchange,提问作者itx
相关产品推荐
相关产品推荐

