背景
在使用node.js+mongodb開發的後端項目,在查詢時,使用了排序,出現如下報錯
Mongodb: Sort operation used more than the maximum 33554432 bytes of RAM
Mongodb的sort操作是把數據拿到內存中再進行排序的,默認給sort操作分配的內存爲32MB,當查詢數據量比較大時,超過32MB,則報錯
解決方案有個思路
1、分配多點排序內存(增加10倍)
db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:335544320})
// 若內存足夠,可以考慮,但是,這將比較消耗資源
2、按錯誤提示,創建索引
db.myCollection.createIndex({fieldName: 1}) // 1爲升序,-1爲降序
db.myCollection.getIndexes() //查看當前collection的索引
// 創建索引將導致以下兩點問題
// 1. 寫數據變慢
// 2. 索引本身站用存儲