MongoDB排序

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 方向一致才能用到索引,复合排序时索引字段顺序和升降序都要匹配
Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注