MongoDB:104857600バイトのソートを超えたメモリのソート

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}
);