MongoDB - Dekket Queries


Hva er en overbygd Query

Per offisielle MongoDB dokumentasjon, er en overbygd spørring en spørring der:
alle feltene i spørringen er en del av en indeks og

alle feltene returneres i søket er i samme indeks

Siden alle feltene som finnes i spørringen er en del av en indeks, matcher MongoDB spørre vilkår og avkastning resultatet ved hjelp av den samme indeksen uten faktisk å se inni dokumenter. Siden indekser er tilstede i RAM, henter data fra indekser er mye raskere i forhold til å hente data ved å skanne dokumenter.

Bruke Dekket spørringer

For å teste dekket spørringer, vurdere følgende dokument i brukere
samling: product: {"_id": objectID ("53402597d852426020000002"), " kontakt ":" 987654321 "," dob ":" 01-01-1991 "," kjønn ":" M "," name ":" Tom Benzamin "," brukernavn ":" tombenzamin "}

Vi vil først skape et sammensatt indeks for brukere
samling på felt kjønn Hotell og brukernavn
bruker følgende spørring:> db.users.ensureIndex ({kjønn: 1, brukernavn: 1} ) Nå vil denne indeksen dekker følgende spørring:> db.users.find ({kjønn: "M"}, {brukernavn: 1, _id: 0})

Det vil si at for de ovennevnte spørring, MongoDB ville ikke gå på jakt i databasen dokumenter. I stedet vil den hente de nødvendige data fra indekserte data som er svært rask.

Siden indeksen inkluderer ikke _id
feltet, har vi eksplisitt unntatt det fra resultatet sett vår spørring som MongoDB ved standard avkastning _id felt i hver spørring. Så følgende spørring ville ikke ha vært dekket inne indeksen opprettet ovenfor:
> db.users.find ({kjønn: "M"}, {brukernavn: 1})

Til slutt, husk at en indeks ikke kan dekke en spørring hvis:

noen av de indekserte felt er en rekke

noen av de indekserte felt er et subdocument