Leer MongoDB-query's en -bewerkingen onder de knie met behulp van deze handige gids.

MongoDB is een van de meest gewilde en bewonderde NoSQL-databases voor professionele ontwikkeling. De flexibiliteit, schaalbaarheid en het vermogen om grote hoeveelheden gegevens te verwerken, maken het een uitstekende keuze voor moderne toepassingen. Als u de reguliere query's en bewerkingen van MongoDB onder de knie wilt krijgen, bent u op de juiste plek.

Of u nu gegevens efficiënt wilt ophalen en manipuleren, robuuste gegevensmodellen wilt implementeren of responsief wilt bouwen applicaties, zal het verwerven van een diep begrip van veelvoorkomende MongoDB-query's en -bewerkingen ongetwijfeld uw vaardigheden.

1. Databases maken of wisselen

Lokaal een database maken via de MongoDB Shell is eenvoudig, vooral als u een cluster op afstand hebt opgezet. U kunt een nieuwe database in MongoDB maken met de gebruik commando:

use db_name

Hoewel de bovenstaande opdracht een nieuwe database maakt, kunt u deze gebruiken om over te schakelen naar een bestaande database zonder een nieuwe database te maken.

2. Laat de database vallen

Schakel eerst naar de database die u wilt neerzetten met behulp van de gebruik opdracht zoals eerder gedaan. Zet vervolgens de database neer met behulp van de dropDatabase() commando:

use db_name
db.dropDatabase()

3. Maak een verzameling

Schakel over naar de doeldatabase om een ​​collectie aan te maken. Gebruik de createCollection() trefwoord om een ​​nieuwe MongoDB-collectie te maken:

db.createCollection("collection_name")

Vervangen verzameling_naam met de door u gekozen collectienaam.

4. Document invoegen in een verzameling

Terwijl u gegevens naar een verzameling verzendt, kunt u een enkel document of een reeks documenten invoegen.

Een enkel document invoegen:

db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})

U kunt de bovenstaande methode ook gebruiken om een ​​reeks documenten met één ID in te voegen:

db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])

Gebruik de insertMany trefwoord:

db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])

5. Haal alle documenten uit een verzameling

U kunt alle documenten uit een collectie opvragen met behulp van de vinden() trefwoord:

db.collection_name.find()

Het bovenstaande retourneert alle documenten binnen de opgegeven verzameling:

U kunt de geretourneerde gegevens ook beperken tot een specifiek aantal. U kunt bijvoorbeeld de volgende opdracht gebruiken om alleen de eerste twee documenten op te halen:

db.collection_name.find().limit(2)

6. Filter documenten in een verzameling

Er zijn veel manieren om documenten in MongoDB te filteren. Denk bijvoorbeeld aan de volgende gegevens:

Gebruik de vinden methode:

db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})

Het bovenstaande retourneert alle documenten waarin de waarde van houdt van is woord. Het voert alleen de namen uit en negeert de document-ID.

U kunt een collectie ook filteren op een numerieke factor. Stel dat u de namen van alle gebruikers ouder dan 21 wilt hebben, gebruik dan de $ gt telefoniste:

db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})

De uitvoer ziet er zo uit:

Probeer te vervangen vinden met vind een om te zien wat er gebeurt. Er zijn echter veel andere zoekwoorden voor filteren:

  • $lt: Alle waarden kleiner dan de opgegeven waarde.
  • $gte: Waarden gelijk aan of groter dan de opgegeven waarde.
  • $te: Waarden die kleiner zijn dan of gelijk zijn aan de gedefinieerde waarde.
  • $eq: Haalt alle waarden op die gelijk zijn aan de opgegeven waarde.
  • $ne: Alle waarden zijn niet gelijk aan de opgegeven waarde.
  • $in: Gebruik dit wanneer u query's uitvoert op basis van een array. Het haalt alle waarden op die overeenkomen met een van de items in de array. De $ negen zoekwoord doet het tegenovergestelde.

7. Sorteer zoekopdrachten

Sorteren helpt de zoekopdracht in een specifieke volgorde te ordenen. U kunt sorteren in aflopende of oplopende volgorde. Houd er rekening mee dat sorteren een numerieke referentie vereist.

Om bijvoorbeeld in oplopende volgorde te sorteren:

db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})

Als u de bovenstaande zoekopdracht in aflopende volgorde wilt sorteren, vervangt u "1" door "-1".

db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})

8. Een document bijwerken

MongoDB-updates vereisen atoomoperatoren om aan te geven hoe u de update wilt laten uitvoeren. Hier is een lijst met veelgebruikte atoomoperatoren die u kunt koppelen aan een updatequery:

  • $set: Voeg een nieuw veld toe of wijzig een bestaand veld.
  • $ duwen: voeg een nieuw item in een array in. Combineer het met de $elk operator om veel items tegelijk in te voegen.
  • $ trekken: verwijder een item uit een array. Gebruik het met $in om veel items in één keer te verwijderen.
  • $niet ingesteld: een veld uit een document verwijderen.

Om een ​​document bij te werken en een nieuw veld toe te voegen, bijvoorbeeld:

db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})

Het bovenstaande werkt het opgegeven document bij zoals weergegeven:

Het verwijderen van het e-mailveld is eenvoudig met de $niet ingesteld telefoniste:

db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})

Beschouw de volgende voorbeeldgegevens:

U kunt een item invoegen in het bestaande artikelen array veld met behulp van de $ duwen telefoniste:

db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})

Dit is de uitvoer:

Gebruik de $elk operator om veel items tegelijk in te voegen:

db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})

Dit is de uitvoer:

Zoals gezegd, de $ trekken operator verwijdert een item uit een array:

db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})

De bijgewerkte gegevens zien er als volgt uit:

Inclusief de $in trefwoord om veel items in een array in één keer te verwijderen:

db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }})

9. Verwijder een document of een veld

De deleteOne of deleteMany trefwoord verwijdert een document uit een verzameling. Gebruik deleteOne een document verwijderen op basis van een opgegeven veld:

db.collection_name.deleteOne({"Name":"IDNoble"})

Als u veel documenten met gemeenschappelijke sleutels wilt verwijderen, gebruikt u deleteMany in plaats van. De onderstaande query verwijdert alle documenten die Schaken zoals hun houdt van.

db.collection.deleteMany({"Likes":"Chess"})

10. Indexerende werking

Indexering verbetert de queryprestaties door het aantal documenten te stroomlijnen dat MongoDB moet scannen. Het is vaak het beste om een ​​index te maken voor velden die u vaker bevraagt.

MongoDB-indexering is vergelijkbaar met hoe u gebruik indexen om SQL-query's te optimaliseren. Om bijvoorbeeld een oplopende index op de Naam veld:

db.collection.createIndex({"Name":1})

Om uw indexen weer te geven:

db.collection.getIndexes()

Bovenstaande is slechts een inleiding. Er zijn verschillende andere methoden voor een index maken in MongoDB.

11. Aggregatie

Met de aggregatiepijplijn, een verbeterde versie van MapReduce, kunt u complexe berekeningen uitvoeren en opslaan vanuit MongoDB. In tegenstelling tot MapReduce, waarvoor de kaart en de verkleiningsfuncties afzonderlijk moeten worden geschreven JavaScript-functies, aggregatie is eenvoudig en gebruikt alleen ingebouwde MongoDB-methoden.

Denk bijvoorbeeld aan de volgende verkoopgegevens:

Met behulp van de aggregatie van MongoDB kunt u het totale aantal verkochte producten voor elke categorie als volgt berekenen en opslaan:

db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])

De bovenstaande query retourneert het volgende:

Master MongoDB-query's

MongoDB biedt veel zoekmethoden, waaronder functies om de queryprestaties te verbeteren. Ongeacht uw programmeertaal, de bovenstaande querystructuren zijn rudimentair voor interactie met een MongoDB-database.

Er kunnen echter enkele verschillen zijn in de basissyntaxis. Terwijl sommige programmeertalen, zoals Python, snake cases herkennen, gebruiken andere, waaronder JavaScript, de camel case. Zorg ervoor dat u onderzoekt wat werkt voor de door u gekozen technologie.