sql >> Database teknologi >  >> NoSQL >> MongoDB

Indeks i MongoDB

Indeks er en typisk måde at fremskynde forespørgsler i normale databasesystemer. Der er ingen forskel mellem MongoDB og et dokumentbaseret databasesystem. Denne artikel giver indsigt i indekset i MongoDB til forespørgselsoptimering.

Indeks i Mongo:

Standard

_id er et ObjectId-objekt, 12-byte BSON-type, der garanterer unikhed i samlingen. Objekt-id'et genereres baseret på tidsstempel, maskin-id, proces-id og en proceslokal inkrementel tæller.

Enkelt felt

For et enkeltfelts indeks og sorteringsoperationer er sorteringsrækkefølgen (dvs. stigende eller faldende) af indeksnøglen ligegyldig, fordi MongoDB kan krydse indekset i begge retninger. Værdien af ​​indeks er typen af ​​indeks. For eksempel angiver 1 stigende rækkefølge, og -1 angiver den faldende rækkefølge.

db.friends.createIndex( { "name" : 1 } )

Sammensat felt

Rækkefølgen af ​​felter opført i et sammensat indeks har betydning. For eksempel, hvis et sammensat indeks består af { brugerid:1, score:-1 }, sorteres indekset først efter bruger-id og derefter, inden for hver bruger-id-værdi, sorteres efter score.

db.products.createIndex( { "item": 1, "stock": 1 } )

Flere nøgler

MongoDB bruger flere indeks til at indeksere indholdet i et array. MongoDB opretter separate indeksposter for hvert element i arrayet. Du behøver ikke udtrykkeligt at oprette flere nøgler.

Tekstindeks

En samling kan højst have ét tekstindeks.
Ydelsesomkostninger for tekstindeks:
tekstindekser kan være store. De indeholder én indeksindgang for hvert unikt efterstammet ord i hvert indekseret felt for hvert indsat dokument.
tekstindekser vil påvirke indsættelsesgennemstrømningen, fordi MongoDB skal tilføje en indeksindgang for hvert unikt efterstammet ord i hvert indekseret felt i hvert nyt kildedokument.

db.reviews.createIndex( { comments: "text" } )

Hash-indeks

Forespørg indhold efter dets hash-værdi. Hash er en funktion, der skal beregnes efter dens værdi. Den hash-værdi er designet til at være distinkt værdi. Den ene fordel er, at det er så hurtigt, som højst tager O(1), men ved kontrakt vil det normale binære søgetræ tage O(Log(N)). Hash vil være teoretisk hurtigere end normal implementering af binært søgetræ. Men ulempen er, at hashindeks, der udfører områdesøgning, vil være ekstremt langsomt end normalt indeks.

Dette er et eksempel i python til at bygge et hash-indeks

db.active.createIndex( { a: "hashed" } )

  1. Ved at bruge MongoDB som vores masterdatabase, skal jeg så bruge en separat grafdatabase til at implementere relationer mellem enheder?

  2. Hvordan HBase i CDP kan udnytte Amazons S3

  3. for mange åbne filer i mgo go server

  4. Mongodb findAndModify node js