MongoDB - Avansert Indexing

Tenk deg følgende dokument av brukere
samling:

{"adresse": {"by": "Los Angeles", "state": "California", "pinkode": "123"}, "tags": ["music", "cricket", "blogger"], "name": "Tom Benzamin"}

Listen dokumentet inneholder en adresse sub-dokument Hotell og en tags rekke

indeksering Array Fields.

Anta at vi ønsker å søke bruker dokumenter basert på sine koder. For dette vil vi skape en indeks på tags array i samlingen.

Opprette en indeks på rekke igjen skaper separate indeksoppføringer for hvert av sine felt. Så i vårt tilfelle når vi oppretter en indeks på tags array, vil separate indekser opprettes for sin verdier musikk, cricket og blogger.

For å lage en indeks på tags array, bruke følgende kode:

> db.users.ensureIndex ({"tags": 1})

Etter å ha laget indeksen kan vi søke på tags feltet av samlingen som dette:

> db.users.find ({tags: "cricket"})

For å verifisere at riktig indeksering brukes, bruk følgende forklare
kommando:

> db.users.find ({tags: "cricket"}). forklare ()

Listen forklare kommandoen resulterte i "markøren ":". BtreeCursor tags_1 "som bekrefter at riktig indeksering brukes


indeksering Sub-Document Fields:

Anta at vi ønsker å søke dokumenter basert på by, stat og pinkode felt. Siden alle disse feltene er del av adressen sub-dokument feltet, vil vi lage indeks på alle feltene i sub-dokumentet.

For å opprette indeksen på alle de tre feltene i sub-dokument, kan du bruke følgende code:

>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

Once indeksen er opprettet, vi kan søke for noen av de underdokument felt bygges denne indeksen som følger:

> db.users.find ({"address.city": "Los Angeles"})

Husk at spørringen uttrykket må følge rekkefølgen av indeksen spesifisert. Så indeksen opprettet ovenfor ville støtte følgende spørsmål:

> db.users.find ({"address.city": "Los Angeles", "address.state": "California"}) Anmeldelser

Det vil også støtte følgende query:

>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})