MongoDB 排序
-
MongoDB 排序
- 本小节将会介绍如何依照特定属性来做排序,如同SQL语法中的Order by指令,以下将会使用SQL语法对照转换作为范例。
MongoDB排序语法:
db.COLLECTION_NAME.find().sort( { <属性> : 1} )
说明:
- COLLECTION_NAME为数据集名称
- Find()为查询指令,详细用法见「MongoDB 文档查询」
- 属性选择欲排序的字段,1表示升序排列,-1表示降序排列
使用SQL语法对照转换:
- 假设SQL原始user数据表如下:
欲使用Age作升序排列
- SQL用法:
SELECT * FROM user ORDER BY age
- MongoDB 用法:
db.user.find().sort( { ‘age’ : 1 } )
欲使用Age作降序排列
- SQL用法:
SELECT * FROM user ORDER BY age DESC
- MongoDB 用法:
db.user.find().sort( { ‘age’ : -1 } )
※在MongoDB中的排序有内存的限制,因此如果档案太大,将无法成功作排序查询,报错如下
Error: error: { “ok”: 0, “errmsg”: “Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.”, “code”: 96 }
说明
sort()指令会使用到内存的RAM,有33554432bytes的限制。可以使用aggregate()聚合的方式解决,aggregate()聚合的内存的排序限制为100M,若要执行大数据排序,需要启动allowDiskUse这个选项,将数据写入临时的文件做排序。