MongoDB Zelfstudie over indexeren – createIndex(), dropindex() Voorbeeld

Indexen zijn erg belangrijk in elke database, en daarmee MongoDB het is niet anders. Met behulp van indexen kan het uitvoeren van query's in MongoDB wordt efficiënter.

Als u een verzameling had met duizenden documenten zonder indexen, en u vervolgens vraagt ​​om bepaalde documenten te vinden, dan is dat in dat geval het geval MongoDB zou de hele collectie moeten scannen om de documenten te vinden. Maar als je indexen had, MongoDB zou deze indexen gebruiken om het aantal documenten dat in de collectie moest worden doorzocht te beperken.

Indexen zijn speciale datasets waarin een 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, gerangschikt op de waarde van het veld.

Inzicht in de impact van indexen

Hoewel we in de inleiding hebben gezien dat indexen goed zijn voor query's, kan het hebben van te veel indexen andere bewerkingen vertragen, zoals de bewerkingen Invoegen, Verwijderen en Bijwerken.

Als er regelmatig invoeg-, verwijder- en bijwerkbewerkingen in documenten worden uitgevoerd, moeten de indexen ook vaak worden gewijzigd. Dit zou alleen maar extra kosten voor de verzameling met zich meebrengen.

In het onderstaande voorbeeld ziet u een voorbeeld van welke veldwaarden een index in een verzameling kunnen vormen. Een index kan gebaseerd zijn op slechts één veld in de collectie, maar kan ook gebaseerd zijn op meerdere velden in de collectie.

In onderstaand voorbeeld worden de Employeeid “1” en EmployeeCode “AA” gebruikt om de documenten in de collectie te indexeren. Wanneer er dus zoekopdrachten worden uitgevoerd, worden deze indexen gebruikt om snel en efficiënt de benodigde documenten in de collectie te vinden.

Dus zelfs als de zoekopdracht gebaseerd is op de EmployeeCode “AA”, zou dat document worden geretourneerd.

Inzicht in de impact van indexen

Indexen maken: createIndex()

Een index maken in MongoDB wordt gedaan met behulp van de “maakIndex”Methode.

Het volgende voorbeeld laat zien hoe u een index aan een verzameling toevoegt. Laten we aannemen dat we dezelfde Employee-verzameling hebben met de veldnamen “Employeeid” en “EmployeeName”.

Indexen maken: createIndex()

db.Employee.createIndex({Employeeid:1})

Code Verklaring:

  1. De maakIndex methode wordt gebruikt om een ​​index te maken op basis van de “Employeeid” van het document.
  2. 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 anders is dan het veld _id (het veld ID wordt gebruikt om elk document in de collectie uniek te identificeren) dat automatisch in de collectie wordt aangemaakt door MongoDB. De documenten worden nu gesorteerd op basis van het Employeeid en niet op het _id-veld.

Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven:

Output:

Indexen maken: createIndex()

  1. 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. Houd er rekening mee dat elke verzameling het veld _id heeft, dat ook als veldwaarde voor de index telt. Omdat het indexveld _id deel uitmaakt van de verzameling wanneer deze voor het eerst wordt gemaakt, is de waarde van numIndexesBefore 1.
  2. De numIndexesAfter: 2 geeft het aantal veldwaarden aan dat in de indexen aanwezig was nadat de opdracht was uitgevoerd.
  3. Hier geeft de uitvoer “ok: 1” aan dat de bewerking succesvol was en dat de nieuwe index aan de verzameling is toegevoegd.

De bovenstaande code laat zien hoe u een index kunt maken op basis van één veldwaarde, maar u kunt ook een index maken op basis van meerdere veldwaarden.

Het volgende voorbeeld laat zien hoe dit gedaan kan worden;

Indexen maken: createIndex()

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Code Verklaring:

  • De createIndex-methode houdt nu rekening met meerdere veldwaarden, waardoor de index nu wordt gemaakt op basis van de “Employeeid” en “EmployeeName”. De Employeeid:1 en EmployeeName:1 geven aan dat de index op deze 2 veldwaarden moet worden aangemaakt, waarbij de :1 aangeeft dat deze in oplopende volgorde moet staan.

Hoe indexen te vinden: getindexes()

Een index vinden in MongoDB wordt gedaan met behulp van de “getIndexen” methode.

Het volgende voorbeeld laat zien hoe dit gedaan kan worden;

Zoek indexen: getindexes()

db.Employee.getIndexes()

Code Verklaring:

  • De getIndexes-methode wordt gebruikt om alle indexen in een verzameling te vinden.

Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven:

Output:

Zoek indexen: getindexes()

  • De uitvoer retourneert een document dat alleen maar laat zien dat er twee indexen in de verzameling zijn, namelijk het veld _id, en de andere het veld Werknemer-id. De :2 geeft aan dat de veldwaarden in de index in oplopende volgorde worden aangemaakt.

Indexen verwijderen: dropindex()

Een index verwijderen in MongoDB gebeurt met behulp van de dropIndex-methode.

Het volgende voorbeeld laat zien hoe dit gedaan kan worden;

Indexen neerzetten: dropindex()

db.Employee.dropIndex(Employeeid:1)

Code Verklaring:

  • De dropIndex-methode neemt de vereiste veldwaarden die uit de index moeten worden verwijderd.

Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven:

Output:

Indexen neerzetten: dropindex()

  1. De nIndexesWas: 3 geeft het aantal veldwaarden aan dat aanwezig was in de indexen voordat de opdracht werd uitgevoerd. Houd er rekening mee dat elke verzameling het veld _id heeft, dat ook als veldwaarde voor de index telt.
  2. De ok: 1-uitvoer geeft aan dat de bewerking succesvol was en dat het veld “Employeeid” uit de index wordt verwijderd.

Om alle indexen in één keer in de verzameling te verwijderen, kan men de opdracht dropIndexes gebruiken.

Het volgende voorbeeld laat zien hoe dit gedaan kan worden.

Indexen neerzetten: dropindex()

db.Employee.dropIndex()

Code Verklaring:

  • De dropIndexes-methode verwijdert alle indexen behalve de _id-index.

Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven:

Output:

Indexen neerzetten: dropindex()

  1. De nIndexesWas: 2 geeft het aantal veldwaarden aan dat aanwezig was in de indexen voordat de opdracht werd uitgevoerd.
  2. Onthoud nogmaals dat elke verzameling het veld _id heeft, dat ook als veldwaarde voor de index telt, en dat dit niet zal worden verwijderd door MongoDB en dat is wat dit bericht aangeeft.
  3. De ok:1-uitvoer geeft aan dat de bewerking succesvol was.

Samenvatting

  • Het definiëren van indexen is belangrijk om documenten in een collectie sneller en efficiënter te kunnen doorzoeken.
  • Indexen kunnen worden gemaakt met behulp van de createIndex-methode. Indexen kunnen worden gemaakt op slechts één veld of op meerdere veldwaarden.
  • Indexen kunnen worden gevonden met behulp van de getIndexes-methode.
  • Indexen kunnen worden verwijderd met behulp van de dropIndex voor afzonderlijke indexen of dropIndexes voor het verwijderen van alle indexen.