MongoDB 排序


  • Lv 1

    MongoDB 排序

    • 本小节将会介绍如何依照特定属性来做排序,如同SQL语法中的Order by指令,以下将会使用SQL语法对照转换作为范例。

    MongoDB排序语法:

    db.COLLECTION_NAME.find().sort( { <属性> : 1} )
    

    说明:

    • COLLECTION_NAME为数据集名称
    • Find()为查询指令,详细用法见「MongoDB 文档查询」
    • 属性选择欲排序的字段,1表示升序排列,-1表示降序排列

    使用SQL语法对照转换:

    • 假设SQL原始user数据表如下:
      0_1478767339075_1.png

    欲使用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这个选项,将数据写入临时的文件做排序。


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待