我在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'中。這是一個優化,以減少可能的條目返回。 –