MongoDB: Сортировка превысила ограничение памяти 104857600 байт

MongoDB: Сортировка превысила ограничение памяти 104857600 байт

Выполняет большую операцию сортировки (агрегирование) в коллекции и отображает следующее сообщение об ошибке:

MongoDB Console

> 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 сортировка в памяти имеет ограничение в 100 МБ, для выполнения большой сортировки вам нужно включить параметрallowDiskUse для записи данных во временные файлы для сортировки.

Чтобы исправить это, включите опциюallowDiskUse в вашем запросе:

db.bigdata.aggregate(
[
    {$group : {_id : "$range", total : { $sum : 1 }}},
    {$sort : {total : -1}}
],
    {allowDiskUse: true}
);