Tutoriel MongoD...login
Tutoriel MongoDB
auteur:php.cn  temps de mise à jour:2022-04-21 17:49:03

Requête d'index couverte par MongoDB


La documentation officielle de MongoDB indique que la requête de couverture est la requête suivante :

  • Tous les champs de requête font partie de l'index

  • Tous les champs renvoyés par la requête sont dans le même index

Puisque tous les champs qui apparaissent dans la requête font partie de l'index, MongoDB élimine le besoin de rechercher dans l'intégralité du document de données les conditions de requête correspondantes et renvoie les résultats de la requête en utilisant le même index.

Étant donné que l'index réside dans la RAM, l'obtention des données de l'index est beaucoup plus rapide que la lecture des données en numérisant le document.


Utilisation d'une requête d'index de couverture

Pour tester la requête d'index de couverture, utilisez la collection d'utilisateurs suivante :

{
   "_id": ObjectId("53402597d852426020000002"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "gender": "M",
   "name": "Tom Benzamin",
   "user_name": "tombenzamin"
}

Nous créons un index commun dans la collection des utilisateurs avec le champs genre et nom d'utilisateur :

>db.users.ensureIndex({gender:1,user_name:1})

Maintenant, l'index couvrira la requête suivante :

>db.users.find({gender:"M"},{user_name:1,_id:0})

C'est-à-dire que pour la requête ci-dessus, MongoDB ne cherchera pas dans le fichier de base de données. Au lieu de cela, il extrait les données de l'index, ce qui constitue une requête de données très rapide.

Étant donné que notre index n'inclut pas le champ _id, _id sera renvoyé par défaut dans la requête, et nous pouvons l'exclure du jeu de résultats de la requête MongoDB.

L'exemple suivant n'exclut pas _id, et la requête ne sera pas couverte :

>db.users.find({gender:"M"},{user_name:1})

Enfin, s'il s'agit de la requête suivante, la requête d'index de couverture ne peut pas être utilisée :

  • Tous les champs d'index sont un tableau

  • Tous les champs d'index sont un sous-document

Site Web PHP chinois