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.