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