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

Verschachtelte Populationsfilterung ist MongoDB

Beim Ausführen von await Order.find({}).populate({ , sendet Mongoose zuerst den find an den Mongod-Server und gibt einen Cursor zurück, der zum Auffüllen weitergegeben wird.

Populate ruft dann jedes Dokument vom Cursor ab und sendet ein separates find an den user -Sammlung, um das/die passende(n) Dokument(e) abzurufen, und iteriert diesen Cursor, wobei die abgerufenen Dokumente in einem Array im Originaldokument platziert werden.

Auffüllen kann beeinflussen, welche Dokumente in die Originaldokumente eingebettet werden, aber es hat keine Fähigkeit, Dokumente aus der ursprünglichen Ergebnismenge zu entfernen.

Die match zum Auffüllen übergeben werden, bedeutet, dass nur übereinstimmende Benutzer zum Originaldokument hinzugefügt werden, also sollten Sie in der Lage sein, filter zu verwenden alle Dokumente im Ergebnis zu entfernen, die keine Benutzer enthalten.