MongoDB: Die Sortierung hat das Speicherlimit von 104857600 Byte überschritten
Führt eine große Sortieroperation (Aggregation) in einer Auflistung aus und zeigt die folgende Fehlermeldung an:
MongoDB-Konsole
> 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
Lösung
Changed in version 2.6 - Lesen Sie dieseMemory Restrictions
In MongoDB ist die In-Memory-Sortierung auf 100 MB begrenzt. Um eine große Sortierung durchzuführen, müssen Sie die OptionallowDiskUse aktivieren, um Daten zu schreiben zu einer temporären Datei zum Sortieren.
Um dies zu beheben, aktivieren Sie die OptionallowDiskUse in Ihrer Abfrage:
db.bigdata.aggregate(
[
{$group : {_id : "$range", total : { $sum : 1 }}},
{$sort : {total : -1}}
],
{allowDiskUse: true}
);