Jeg ville helt klart gå med at bruge $in-forespørgslen og levere en række _ids.
Eksempel:
db.collection.find({
"key": {
"$in": [
ObjectId("xxx"),
ObjectId("yyy"),
ObjectId("zzz")
]
}
})
Hvorfor?
- Hvis du looper, er der en vis mængde opsætning og nedtagning for hver forespørgsel, der skaber og udmatter markører, hvilket ville skabe overhead.
- Hvis du ikke gør dette på en lokal maskine, opretter det også tcp/ip overhead for hver anmodning. Lokalt kan du bruge domæne-sockets.
- Der er et indeks på "_id" oprettet som standard, og indsamling af en gruppe dokumenter, der skal returneres i en batch-anmodning, bør være ekstremt hurtig, så der er ingen grund til at dele dette op i mindre forespørgsler.
Der er noget yderligere dokumentation her, hvis du vil tjekke det ud.