Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$orderby

在此页面上

  • 行为
$orderby

注意

自 v3.2 起已弃用

从 v 3.2开始, $orderby操作符在mongosh中已弃用。 在mongosh中,请改用 cursor.sort()

$orderby操作符按升序或降序对查询结果进行排序。

mongosh提供了cursor.sort()方法:

db.collection.find().sort( { age: -1 } )

您还可以通过以下任一形式指定该选项:

db.collection.find()._addSpecial( "$orderby", { age : -1 } )
db.collection.find( { $query: {}, $orderby: { age : -1 } } )

这些示例返回名为collection的集合中的所有文档,该集合按age字段降序排序。 为$orderby指定一个负值(例如 -1 (如上)按降序排序,或为正值(例如 1 )按升序排序。

由于索引包含有序记录, MongoDB可以从包含排序字段的索引中获取排序结果。 如果排序使用与查询谓词相同的索引, MongoDB可以使用多个索引来支持排序操作。

如果 MongoDB 无法使用一个或多个索引来获取排序顺序,则 MongoDB 必须对数据执行阻塞排序操作。阻塞排序表示 MongoDB 必须在返回结果之前消耗并处理排序的所有输入文档。阻塞排序不会阻塞对集合或数据库的并发操作。

使用索引的排序操作通常比阻塞排序性能更好。有关创建索引以支持排序操作的更多信息,请参阅使用索引对查询结果进行排序

如果 MongoDB 需要使用超过 100 MB 的系统内存来进行阻塞排序操作,则 MongoDB 将返回错误,除非查询指定 cursor.allowDiskUse()MongoDB 4.4 新增功能)。allowDiskUse() 允许 MongoDB 在处理阻塞排序操作时使用磁盘上的临时文件来存储超过 100 MB 系统内存限制的数据。

要避免此错误,请创建索引以支持排序操作或将$orderbycursor.maxTimeMS()和/或cursor.limit()结合使用。 cursor.limit()通过优化算法提高返回此查询所需的速度并减少所需的内存量。 指定的限制必须导致文档数量不超过100 MB 限制。

后退

$min

在此页面上