Ich benutze $ lookup in PyMongo, um zwei Sammlungen erfolgreich "beizutreten" (das funktioniert). Ich habe ein Problem, bei dem die zweite Sammlung, der ich beitrete, die BSON-Dokumentgröße überschreiten kann, wenn alle Datensätze zurückgegeben werden.MongoDB Aggregations Limit Lookup
Suche $ limit zu verwenden, um die Anzahl der Datensätze zu beschränken, die unter „match_docs“ zB dürfen teilnehmen: 100 Datensätze maximal aus „Kommentare“ pro OBJ_ID:
db.indicators.aggregate([
{
"$lookup": {
"from": "comments",
"localField": "_id",
"foreignField": "obj_id",
"as": "match_docs"
}
}
])
Ich habe versucht, verschiedene Arten von $ limit, und es scheint nur die Gesamtzahl der Ergebnisse insgesamt zu begrenzen, nicht nur für den Beitritt.
Sie können kein Limit in $ Lookup gesetzt, aber Sie haben nicht diese die Abfrage Arbeit machen müssen. Das Hinzufügen von '{allowDiskUse: true}' zu Ihrer Aggregationsoption sollte das Problem beheben – felix
@felix OP spricht über die BSON-Dokumentgrößenbeschränkung, nicht über das Speicherlimit. –
Können Sie den Inhalt von '$ lookup' mit $ übereinstimmen, um die Ergebnisse zu reduzieren? Es gibt einen speziellen Fall, wenn die Pipelinestufen "$ lookup" -> "$ unload" -> "$ match" sind und die Bedingung in "$ match" (nacheinander) und "$ match" bezieht sich auf das Array von '$ lookup', wo die letzten zwei Stufen in den $ Lookup "gehisst" werden. Dies ist eine Optimierung, um die möglichen Einträge zu reduzieren. –