Reputation: 315
I'm running an aggregation on a collection of around 300k+ records which requires several unwinds and regroups. I'm hitting the following error;
'exception: Exceeded memory limit for $group, but didn\'t allow external sort. Pass allowDiskUse:true to opt in.'
I can't seem to work out how to pass this option through using the mongoose.js API?
Upvotes: 20
Views: 16952
Reputation: 152
const data = await Model.aggregate([..]).option({ allowDiskUse: true }).explain();
Source - Mongoose explain API
Upvotes: 0
Reputation: 418
const agg = Model.aggregate(..).option({ allowDiskUse: true });
worked for me as per the Mongoose V6.0.4 documentation here
Upvotes: 3
Reputation: 246
We don't have a helper for this right now, but an allowDiskUse()
helper function will be included in Mongoose 3.8.12, which I'll ship today: https://github.com/LearnBoost/mongoose/issues/2114
If you want an immediate solution or don't want to upgrade to 3.8.12 (although upgrading is recommended), you can do something like:
var aggregation = MyModel.aggregate(...);
aggregation.options = { allowDiskUse: true };
aggregation.exec(function() {});
Upvotes: 23