J'irais certainement avec la requête $in et en fournissant un tableau de _ids.
Exemple :
db.collection.find({
"key": {
"$in": [
ObjectId("xxx"),
ObjectId("yyy"),
ObjectId("zzz")
]
}
})
Pourquoi ?
- Si vous bouclez, il y a une certaine quantité de configuration et de démontage pour chaque requête créant et épuisant des curseurs, ce qui créerait une surcharge.
- Si vous ne le faites pas sur une machine locale, cela crée également une surcharge tcp/ip pour chaque requête. Localement, vous pouvez utiliser des sockets de domaine.
- Il existe un index sur "_id" créé par défaut et la collecte d'un groupe de documents à renvoyer dans une requête par lot devrait être extrêmement rapide, il n'est donc pas nécessaire de le diviser en requêtes plus petites.
Il y a de la documentation supplémentaire ici si vous voulez le vérifier.