MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB verwendet Sharding mit $lookup-Aggregationsoperator

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.

  1. Führen Sie Ihre aggregate durch Abfrage.
  2. Ziehen Sie die "localField"-Werte aus Ihren Abfrageergebnissen in ein Array, möglicherweise mit Array#map .
  3. Führen Sie eine find durch Abfrage für die „from“-Sammlung mit einer Abfrage wie {foreignField: {$in: localFieldArray}}
  4. 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.