Vorrei sicuramente utilizzare la query $in e fornire una matrice di _ids.
Esempio:
db.collection.find({
"key": {
"$in": [
ObjectId("xxx"),
ObjectId("yyy"),
ObjectId("zzz")
]
}
})
Perché?
- Se esegui il ciclo, c'è una certa quantità di configurazione e smontaggio per ogni query che crea ed esaurisce i cursori che creerebbero un sovraccarico.
- Se non lo stai facendo su una macchina locale, crea anche un sovraccarico tcp/ip per ogni richiesta. A livello locale potresti usare socket di dominio.
- Esiste un indice su "_id" creato per impostazione predefinita e la raccolta di un gruppo di documenti da restituire in una richiesta batch dovrebbe essere estremamente veloce, quindi non è necessario suddividerlo in query più piccole.
C'è della documentazione aggiuntiva qui se vuoi verificarla.