我在PyMongo中使用$ lookup来成功“加入”两个集合(这是可行的)。我遇到问题,即我加入的第二个集合在返回所有记录时可能会超过BSON文档大小。MongoDB聚集限制查找
我期待使用$极限限制所允许“match_docs”,例如下加入记录数:从“意见” 100的最大记录每obj_id:
db.indicators.aggregate([
{
"$lookup": {
"from": "comments",
"localField": "_id",
"foreignField": "obj_id",
"as": "match_docs"
}
}
])
我已经试过各种$限制的类型,它似乎只限制整体结果的总数,而不仅仅是加入。
你可以不设置在$查找的限制,但你并不需要这使查询工作。将'{allowDiskUse:true}'添加到您的聚合选项应该可以解决问题 – felix
@felix OP正在讨论BSON文档大小限制,而不是内存限制。 –
为了减少结果,您可以''匹配'从'$ lookup'返回的内容吗?当流水线阶段是'$ lookup' - >'$ unwind' - >'$ match'并且'$ match'(相继)和'$ match'中的条件引用了$ lookup',后两个阶段被“提升”到'$ lookup'中。这是一个优化,以减少可能的条目返回。 –