MongoDB报错,Sort operation used more than the maximum 33554432 bytes of RAM.Add an index

xiaoxiao2021-02-28  25

最近项目中用到了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代表反序, 取正反没多大影响

转载请注明原文地址: https://www.6miu.com/read-2629772.html

最新回复(0)