MongoDB聚合 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

sort排序

可以根据任何字段(或者多个字段)进行排序,与普通查询中的语法相同。如果要对大量的文档进行排序,强烈建议在管道的第一阶段进行排序,这时的排序操作可以使用索引。否则,排序过程就会比较慢,而且会占用大量内存。

可以在排序中使用文档中实际存在的字段,也可以使用在投射时重命名的字段:

db.employees.aggregate(
   {
       "$project":{
           "compensation":{
               "$add":["$salary","$bonus"]
           },
           name:1
       }
   },
   {
       "$sort":{"compensation":-1,"name":1}
   }
)

这个例子会对员工排序,最终的结果是按照报酬从高到低,姓名从A到Z的顺序排序。

排序的方向可以是1(升序)和-1(降序)。

与前面讲过的"$group"一样,"$sort"也是一个无法使用流式工作方式的操作符。"$sort"也必须要接收到所有文档之后才能进行排序。在分片环境下,先在各个分片上进行排序,然后将各个分片的排序结果发送到mongos做进一步处理。