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