Jag skulle definitivt gå med att använda $in-frågan och tillhandahålla en uppsättning _ids.
Exempel:
db.collection.find({
"key": {
"$in": [
ObjectId("xxx"),
ObjectId("yyy"),
ObjectId("zzz")
]
}
})
Varför?
- Om du loopar, finns det en viss mängd inställningar och rivningar för varje fråga som skapar och tröttar ut markörer som skulle skapa overhead.
- Om du inte gör detta på en lokal dator skapar det också tcp/ip-overhead för varje begäran. Lokalt kan du använda domänsockets.
- Det finns ett index på "_id" skapat som standard och att samla in en grupp av dokument som ska returneras i en gruppförfrågan bör vara extremt snabb så det finns ingen anledning att dela upp detta i mindre frågor.
Det finns ytterligare dokumentation här om du vill kolla in den.