MongoDB小知识 - MongoDB Sort : how to fix maximum RAM exceeded error

MongoDB Sort : how to fix maximum RAM exceeded error

针对这个问题具体的报错信息如下

Error: error: {
“ok” : 0,
“errmsg” : “Executor error during find command :: caused by :: errmsg: "Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit."“,
“code” : 96,
“codeName” : “OperationFailed”
}

解决办法:

1、加索引(这个是比较常用的方式)

2、增加RAM大小

1
db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: 335544320})

具体的大小可以根据具体的情况来设置

查看RAM大小的话,使用下面的命令

1
db.runCommand( { getParameter : 1, "internalQueryExecMaxBlockingSortBytes" : 1 } )

3、使用aggregate 命令

如果用aggregate的话,通过设置选项allowDiskUse的值为true,允许临时将数据写到文件中,具体使用参考如下

1
2
3
4
5
db.getCollection('users').aggregate( [
{ $sort : { age : 1} }
],
{ allowDiskUse: true }
)

如果在排序的时候想要得到一个好的性能,最好是创建索引

1
db.users.createIndex( { age: 1 } )

参考文章点击这里