sql >> Database >  >> NoSQL >> MongoDB

Index in MongoDB

Index is een typische manier om zoekopdrachten in een normaal databasesysteem te versnellen. Er is geen verschil tussen MongoDB en een op documenten gebaseerd databasesysteem. Dit artikel geeft inzicht in de index in MongoDB, voor query-optimalisatie.

Index in Mongo:

Standaard

_id is een ObjectId-object, 12-byte BSON-type dat uniciteit binnen de collectie garandeert. De ObjectId wordt gegenereerd op basis van tijdstempel, computer-ID, proces-ID en een proces-lokale incrementele teller.

Enkel veld

Voor een index met één veld en sorteerbewerkingen is de sorteervolgorde (d.w.z. oplopend of aflopend) van de indexsleutel niet van belang, omdat MongoDB de index in beide richtingen kan doorlopen. De waarde van index is het type index. Bijvoorbeeld, 1 geeft oplopende volgorde aan en -1 geeft de aflopende volgorde aan.

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

Samengesteld veld

De volgorde van de velden in een samengestelde index is van belang. Als een samengestelde index bijvoorbeeld bestaat uit { userid:1, score:-1 }, sorteert de index eerst op userid en vervolgens, binnen elke userid-waarde, op score.

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

Meerdere toetsen

MongoDB gebruikt meerdere indexen om de inhoud in een array te indexeren. MongoDB maakt afzonderlijke indexvermeldingen voor elk element van de array. U hoeft niet expliciet meerdere sleutels aan te maken.

Tekstindex

Een collectie kan maximaal één tekstindex hebben.
Prestatiekosten voor tekstindex:
tekstindexen kunnen groot zijn. Ze bevatten één indexitem voor elk uniek post-stemmed woord in elk geïndexeerd veld voor elk ingevoegd document.
tekstindexen hebben invloed op de invoegdoorvoer omdat MongoDB een indexitem moet toevoegen voor elk uniek post-stemmed woord in elk geïndexeerd veld van elk nieuw brondocument.

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

Hash-index

Zoek naar inhoud op zijn gehashte waarde. De hash is een functie om te berekenen op basis van zijn waarde. De gehashte waarde is ontworpen om een ​​onderscheidende waarde te zijn. Het enige voordeel is dat het zo snel is, dat maximaal O(1) nodig is, maar volgens contract zal de normale binaire zoekboom O(Log(N)) nemen. Hash zal theoretisch sneller zijn dan de normale binaire zoekboomimplementatie. Maar het nadeel is dat de hash-index het zoeken naar bereik extreem traag zal zijn dan de normale index.

Dit is een voorbeeld in python om een ​​hash-index te bouwen

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

  1. Spring Data Redis:Redis Pipeline retourneert altijd null

  2. 3 manieren om een ​​index in MongoDB te plaatsen

  3. Hoe voer ik een NOT IN-query uit in Mongo?

  4. FOUT:Kan pid-bestand niet schrijven naar /var/run/mongodb/mongod.pid:Geen dergelijk bestand of directory-info fedora 20