排序超出了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: ...}
]