有什么方法可以为 mongoose.js 聚合提供 allowedDiskUse 选项吗?

问题描述 投票:0回答:4

我正在对大约 300k+ 条记录的集合运行聚合,这需要多次展开和重新分组。我遇到以下错误;

'exception: Exceeded memory limit for $group, but didn\'t allow external sort. Pass allowDiskUse:true to opt in.'

我似乎无法弄清楚如何使用 mongoose.js API 传递此选项?

node.js mongodb mongoose aggregation-framework
4个回答
24
投票
Model.aggregate(..).allowDiskUse(true).exec(callback)

猫鼬API


23
投票

我们现在还没有一个帮助器,但是

allowDiskUse()
帮助器函数将包含在 Mongoose 3.8.12 中,我今天将发布:https://github.com/LearnBoost/mongoose/issues /2114

如果您想要立即解决或不想升级到3.8.12(尽管建议升级),您可以执行以下操作:

var aggregation = MyModel.aggregate(...); 
aggregation.options = { allowDiskUse: true }; 
aggregation.exec(function() {});

3
投票
const agg = Model.aggregate(..).option({ allowDiskUse: true });

根据 Mongoose V6.0.4 文档为我工作这里


0
投票

const data = wait Model.aggregate([..]).option({allowDiskUse: true }).explain();

来源 - Mongoose 解释 API

© www.soinside.com 2019 - 2024. All rights reserved.