MongoDB排序
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,-1 为降序排列。
db.col.find().sort({"age":-1})Code language: JavaScript (javascript)
按照 age 年龄进行降序排序。
示例
db.persons.find().sort({ age:-1 })
db.persons.find().sort({ age:1 })Code language: CSS (css)
分页的时候一般进行排序后再分页:
db.persons.find().sort({ age:-1 }).skip(3).limit(3)Code language: CSS (css)
补充说明
- sort() 可以指定多个排序字段,按顺序依次生效:
db.persons.find().sort({ age:-1, name:1 })Code language: CSS (css)
先按 age 降序,age 相同的再按 name 升序。
- 如果查询没有调用 sort(),返回结果的顺序是不确定的,不能依赖自然顺序
- sort() 与 limit()、skip() 的调用顺序不影响最终结果,但建议写成 sort().skip().limit() 的顺序,可读性更好
- 排序字段上如果有索引,排序操作会利用索引加速;没有索引时 MongoDB 会在内存中排序,数据量大时会慢
- 单字段排序时索引方向要和 sort 方向一致才能用到索引,复合排序时索引字段顺序和升降序都要匹配
Previous: Limit与Skip方法
Next: 索引