聚合的$sort
阶段对所有输入文件进行排序,并按排序顺序返回管道。
语法
{
$sort: {
<field1>: <sort order>, <field2>: <sort order> ... } }
$sort
阶段参数为一个文档,该文档指定了要排序的字段和相应的排序顺序。<sort order>
为下列值之一:
值 | 含义 |
---|---|
1 |
正序(由小到大) |
2 |
逆序(由大到小) |
{ $meta: "textScore" } |
根据textScore 的计算结果按照由大到小排序 |
如果对多个字段进行排序,排序顺序将从左到右进行计算。例如,在上面的表格中,文档首先按<field1>
排序。然后,具有相同<field1>
值的文档再按<field2>
排序。
用法
需要注意:排序最多支持32个键
排序的一致性问题
MongoDB不会按特定顺序对集合中的文档排序,因此,对于有重复值的字段进行排序时,返回的顺序可能会不一样,也就是说排序是不稳定的。如果希望排序顺序一致,至少要在排序字段中包含一个唯一字段,最简单的方法就是排序时加上_id
字段。
如下面的集合restaurant
:
db.restaurants.insertMany( [
{
"_id" : 1, "name" : "Central Park Cafe", "borough" : "Manhattan"},
{
"_id" : 2, "name" : "Rock A Feller Bar and Grill", "borough" : "Queens"},
{
"_id" : 3, "name" : "Empire State Pub", "borough&