MongoDB:ソートがメモリ制限の104857600バイトを超えました
コレクションで大規模な並べ替え操作(集計)を実行し、次のエラーメッセージをヒットします。
MongoDBコンソール
> db.bigdata.aggregate( {$group : {_id : "$range", total : { $sum : 1 }}}, {$sort : {total : -1}} ); #... aggregate failed at Error () at doassert (src/mongo/shell/assert.js:11:14) #... Error: command failed: { "errmsg" : "exception: Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in.", "code" : 16819, "ok" : 0 }
P.S Tested with MongoDB 3.0.6
溶液
Changed in version 2.6 –これを読むMemory Restrictions
MongoDBでは、メモリ内の並べ替えには1億の制限があり、大規模な並べ替えを実行するには、allowDiskUse
オプションを有効にしてデータを書き込む必要がありますソート用の一時ファイルに。
これを修正するには、クエリでallowDiskUse
オプションを有効にします。
db.bigdata.aggregate( [ {$group : {_id : "$range", total : { $sum : 1 }}}, {$sort : {total : -1}} ], {allowDiskUse: true} );