MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongodb :opérateur $in vs beaucoup de requêtes uniques

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.