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()

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

posted on 2018-07-11 14:00  shaomine  阅读(569)  评论(0编辑  收藏  举报