zoukankan      html  css  js  c++  java
  • MongoDB Sort op eration used more than the maximum 33554432 bytes of RAM. Add an index, or speci fy a smaller limit.

      最近在获取mongodb某个集合的数据过程中,在进行排序的过程中报错,具体报错信息如下:

      

    Error: error: {
            "ok" : 0,
            "errmsg" : "Executor error during find command: OperationFailed: Sort op
    eration used more than the maximum 33554432 bytes of RAM. Add an index, or speci
    fy a smaller limit.",
            "code" : 96,
            "codeName" : "OperationFailed"
    }

      知道这是排序的时候报的错,因为 mongo 的 sort 操作是在内存中操作的,必然会占据内存,同时mongo 内的一个机制限制排序时最大内存为 32M,当排序的数据量超过 32M,就会报上面的这个错,

      解决办法就像上面提示的意思,一是加大 mongo 的排序内存,这个一般是运维来管,也有弊端,就是数据量如果再大,还要往上加。另一个办法就是加索引。

      

       创建索引

      db.你的collection.createIndex({"你的字段": -1}),此处 -1 代表倒序,1 代表正序;

      比如对trsdata集合的IR_URLTIME字段建立索引:db.trsdata.createIndex({"IR_URLTIME": -1})

      查询索引: db.trsdata.getIndexes()

      这样建立索引后就可以进行排序了。

  • 相关阅读:
    乱七八糟
    堆-heap
    转linux文件的读写
    @转EXT2->EXT3->EXT4
    (转)僵死进程与孤儿进程
    java
    poj-1062-昂贵的聘礼
    java 之 wait, notify, park, unpark , synchronized, Condition
    事物(笔记)
    BPX-tree
  • 原文地址:https://www.cnblogs.com/shaosks/p/9294146.html
Copyright © 2011-2022 走看看