MongoDB报错,Sort operation used more than the maximum 33554432 bytes of RAM.Add an index
程序员文章站
2024-02-23 16:18:28
...
最近项目中用到了mongodb,文档型数据库,nosql,还是第一次接触到.
最大的不习惯就在于,所有的增删改查全部走的是一套API,函数调用就出来了,不用写sql语句查询
在项目中要查询数据,当时数据库有7000多条数据,查询的时候就报错了
Sort operation used more than the maximum 33554432 bytes of RAM.Add an index, or specify a smaller limit
一看是内存不够了, 上面说是两种解决方法,一个是 增加RAM ,还有一个是建索引,
首先是增加内存RAM
在robot的命令栏输入
db.adminCommand({setParameter:1,internalQueryExecMaxBlockingSortBytes:335544320})
然后按ctrl+enter
我以为成功了,但是并没有,因为项目的重要性,并没有管理员权限,很坑爹
于是就只能第二种方法 建索引了,各种索引各种建,可是还是没有用,当时就感觉很奇怪,怎么索引建了还是报错,
后来仔细一看突然想起来,应该是建代码中Sort的参数作为索引啊
比如上图,我就应该建creat_time 的索引
db.article.ensureIndex({"create_time":1})
代码再跑起来一看,ok了.
如果代码中Sort 多个条件,那个建立多个条件的索引
db.article.ensureIndex({"create_time":1,"xxx":1,"yyy":1,})
json中1代表正序,-1代表反序, 取正反没多大影响