Indexen zijn erg belangrijk in elke database, en met MongoDB is dat niet anders. Met het gebruik van indexen wordt het uitvoeren van queries in MongoDB efficiënter.
Als u een collectie had met duizenden documenten zonder indexen, en u zoekt naar bepaalde documenten, dan zou MongoDB in dat geval de hele collectie moeten scannen om de documenten te vinden. Maar als u indexen had, zou MongoDB deze indexen gebruiken om het aantal documenten dat in de collectie moest worden doorzocht te beperken.
Indexen zijn speciale gegevenssets waarin een gedeeltelijk deel van de gegevens van de collectie wordt opgeslagen. Omdat de gegevens gedeeltelijk zijn, wordt het gemakkelijker om deze gegevens te lezen. Deze gedeeltelijke set slaat de waarde op van een specifiek veld of een set velden gesorteerd op de waarde van het veld.
In deze tutorial leer je -
- Inzicht in de impact van indexen
- Indexen maken: createIndex ()
- Indexen zoeken: getindexes ()
- Indexen neerzetten: dropindex ()
Inzicht in de impact van indexen
Hoewel we in de inleiding hebben gezien dat indexen goed zijn voor zoekopdrachten, kan het hebben van te veel indexen andere bewerkingen vertragen, zoals de bewerking Invoegen, Verwijderen en Bijwerken.
Als er frequente invoeg-, verwijder- en update-bewerkingen op documenten worden uitgevoerd, zouden de indexen zo vaak moeten worden gewijzigd, wat slechts een overhead voor de verzameling zou zijn.
Het onderstaande voorbeeld toont een voorbeeld van welke veldwaarden een index in een verzameling kunnen vormen. Een index kan gebaseerd zijn op slechts één veld in de collectie, of het kan gebaseerd zijn op meerdere velden in de collectie.
In het onderstaande voorbeeld worden de Employeeid "1" en EmployeeCode "AA" gebruikt om de documenten in de collectie te indexeren. Dus wanneer een zoekopdracht wordt uitgevoerd, worden deze indexen gebruikt om snel en efficiënt de vereiste documenten in de collectie te vinden.
Dus zelfs als de zoekopdracht is gebaseerd op de EmployeeCode "AA", zou dat document worden geretourneerd.
Indexen maken: createIndex ()
Het aanmaken van een index in MongoDB wordt gedaan met behulp van de " createIndex " -methode.
Het volgende voorbeeld laat zien hoe index aan collectie wordt toegevoegd. Laten we aannemen dat we dezelfde Employee-collectie hebben met de veldnamen "Employeeid" en "EmployeeName".
db.Employee.createIndex({Employeeid:1})
Code Verklaring:
- De createIndex- methode wordt gebruikt om een index te maken op basis van de "Employeeid" van het document.
- De parameter '1' geeft aan dat wanneer de index wordt gemaakt met de veldwaarden "Employeeid", deze in oplopende volgorde moeten worden gesorteerd. Houd er rekening mee dat dit verschilt van het veld _id (het veld id wordt gebruikt om elk document in de collectie uniek te identificeren) dat automatisch door MongoDB in de collectie wordt aangemaakt. De documenten worden nu gesorteerd volgens het Employeeid en niet het _id-veld.
Als de opdracht met succes is uitgevoerd, wordt de volgende uitvoer weergegeven:
Uitgang:
- De numIndexesBefore: 1 geeft het aantal veldwaarden aan (de werkelijke velden in de verzameling) die aanwezig waren in de indexen voordat de opdracht werd uitgevoerd. Onthoud dat elke verzameling het _id-veld heeft dat ook als een veldwaarde voor de index telt. Aangezien het indexveld _id deel uitmaakt van de verzameling wanneer het voor het eerst wordt gemaakt, is de waarde van numIndexesBefore 1.
- De numIndexesAfter: 2 geeft het aantal veldwaarden aan die aanwezig waren in de indexen nadat de opdracht werd uitgevoerd.
- Hier geeft de uitvoer "ok: 1" aan dat de bewerking is gelukt en dat de nieuwe index aan de verzameling wordt toegevoegd.
De bovenstaande code laat zien hoe je een index kunt maken op basis van één veldwaarde, maar je kunt ook een index maken op basis van meerdere veldwaarden.
Het volgende voorbeeld laat zien hoe dit kan worden gedaan;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Code Verklaring:
- De createIndex-methode houdt nu rekening met meerdere veldwaarden die er nu voor zorgen dat de index wordt gemaakt op basis van de "Employeeid" en "EmployeeName". De Employeeid: 1 en EmployeeName: 1 geven aan dat de index moet worden gemaakt op deze 2 veldwaarden, waarbij de: 1 aangeeft dat deze in oplopende volgorde moet zijn.
Indexen zoeken: getindexes ()
Het vinden van een index in MongoDB wordt gedaan met behulp van de "getIndexes" -methode.
Het volgende voorbeeld laat zien hoe dit kan worden gedaan;
db.Employee.getIndexes()
Code Verklaring:
- De methode getIndexes wordt gebruikt om alle indexen in een verzameling te vinden.
Als de opdracht met succes is uitgevoerd, wordt de volgende uitvoer weergegeven:
Uitgang:
- De uitvoer retourneert een document dat alleen laat zien dat er 2 indexen in de verzameling zijn, het _id-veld en de andere is het veld Werknemers-ID. De: 1 geeft aan dat de veldwaarden in de index in oplopende volgorde worden gemaakt.
Indexen neerzetten: dropindex ()
Het verwijderen van een index in MongoDB wordt gedaan met behulp van de dropIndex-methode.
Het volgende voorbeeld laat zien hoe dit kan worden gedaan;
db.Employee.dropIndex(Employeeid:1)
Code Verklaring:
- De dropIndex-methode gebruikt de vereiste veldwaarden die uit de index moeten worden verwijderd.
Als de opdracht met succes is uitgevoerd, wordt de volgende uitvoer weergegeven:
Uitgang:
- De nIndexesWas: 3 geeft het aantal veldwaarden aan die aanwezig waren in de indexen voordat de opdracht werd uitgevoerd. Onthoud dat elke verzameling het _id-veld heeft dat ook als een veldwaarde voor de index telt.
- De ok: 1 output geeft aan dat de operatie succesvol was, en het "Employeeid" veld is verwijderd uit de index.
Om alle indexen in de collectie tegelijk te verwijderen, kan men het dropIndexes commando gebruiken.
Het volgende voorbeeld laat zien hoe u dit kunt doen.
db.Employee.dropIndex()
Code Verklaring:
- Met de methode dropIndexes worden alle indexen verwijderd, behalve de index _id.
Als de opdracht met succes is uitgevoerd, wordt de volgende uitvoer weergegeven:
Uitgang:
- De nIndexesWas: 2 geeft het aantal veldwaarden aan die aanwezig waren in de indexen voordat de opdracht werd uitgevoerd.
- Onthoud nogmaals dat elke verzameling het _id-veld heeft dat ook telt als een veldwaarde voor de index, en dat niet zal worden verwijderd door MongoDB en dat is wat dit bericht aangeeft.
- De ok: 1-uitvoer geeft aan dat de bewerking is geslaagd.
Overzicht
- Het definiëren van indexen is belangrijk voor het sneller en efficiënter zoeken van documenten in een verzameling.
- Indexen kunnen worden gemaakt met behulp van de createIndex-methode. Er kunnen indexen worden gemaakt voor slechts één veld of voor meerdere veldwaarden.
- Indexen kunnen worden gevonden met behulp van de getIndexes-methode.
- Indexen kunnen worden verwijderd door dropIndex te gebruiken voor enkele indexen of dropIndexes om alle indexen te verwijderen.