Ich würde definitiv die $in-Abfrage verwenden und ein Array von _ids bereitstellen.
Beispiel:
db.collection.find({
"key": {
"$in": [
ObjectId("xxx"),
ObjectId("yyy"),
ObjectId("zzz")
]
}
})
Warum?
- Wenn Sie eine Schleife verwenden, gibt es eine gewisse Menge an Einrichtung und Abbau für jede Abfrage, die Cursor erzeugt und erschöpft, was Mehraufwand verursachen würde.
- Wenn Sie dies nicht auf einem lokalen Rechner tun, erzeugt es auch TCP/IP-Overhead für jede Anfrage. Lokal könnten Sie Domain-Sockets verwenden.
- Es gibt einen Index für "_id", der standardmäßig erstellt wird, und das Sammeln einer Gruppe von Dokumenten, die in einer Batch-Anfrage zurückgegeben werden sollen, sollte extrem schnell sein, sodass es nicht nötig ist, dies in kleinere Abfragen aufzuteilen.
Hier finden Sie zusätzliche Dokumentation, wenn Sie sie sich ansehen möchten.