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

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

猜你喜欢

转载自blog.csdn.net/a897180673/article/details/79574322