排序超出了104857600字节的内存限制,但未选择外部排序.正在中止操作.传递allowDiskUse:true以选择



排序超出了104857600字节的内存限制,但没有选择外部排序。正在中止操作。

如图所示,您需要将{allowDiskUse:true}传递给mongo。只需将其附加在查询的末尾即可。

db.collection.aggregate([
...
],
{
allowDiskUse: true
}
);

如果您正在使用猫鼬,请尝试以下操作:

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);

参见文件

对于来自SQL背景的人员来说,他们看到了这一点。我们通常把我们的";ORDER BY";子句。我本能地把我的";排序";子句作为聚合的最后一部分。

使用Mongo聚合,我认为优化器智能地移动您的";排序";条款。因此,如果它在逻辑上适用于您的查询;排序";子句,再加上一个索引,你就可以优化你的方法来解决这个问题。

[
{$match: ...},
{$project: ...},
{sort: {time: -1}},
]
=>
[
{sort: {time: -1}},
{$match: ...},
{$project: ...}
]

最新更新