Wie die von Ihnen zitierten Dokumente zeigen, können Sie $lookup
nicht verwenden auf einer geteilten Sammlung. Die Best-Practice-Problemumgehung besteht also darin, die Suche selbst in einer separaten Abfrage durchzuführen.
- Führen Sie Ihre
aggregate
durch Abfrage. - Ziehen Sie die "localField"-Werte aus Ihren Abfrageergebnissen in ein Array, möglicherweise mit
Array#map
. - Führen Sie eine
find
durch Abfrage für die „from“-Sammlung mit einer Abfrage wie{foreignField: {$in: localFieldArray}}
- Fügen Sie Ihre Ergebnisse in das gewünschte Format zusammen.
Lassen Sie den $lookup
nicht zu Einschränkungen hindern Sie daran, Sammlungen zu fragmentieren, die dies für die Skalierbarkeit erfordern. Führen Sie einfach die Suchfunktion selbst aus.