Få styr på MongoDB-forespørgsler og -operationer ved hjælp af denne praktiske guide.

MongoDB er en af ​​de mest ønskede og beundrede NoSQL-databaser til professionel udvikling. Dens fleksibilitet, skalerbarhed og evne til at håndtere store mængder data gør den til et topvalg til moderne applikationer. Hvis du vil mestre MongoDBs almindelige forespørgsler og operationer, er du på det rigtige sted.

Uanset om du ønsker effektivt at hente og manipulere data, implementere robuste datamodeller eller bygge responsive applikationer, opnåelse af en dyb forståelse af almindelige MongoDB-forespørgsler og operationer vil uden tvivl forbedre din færdigheder.

1. Opret eller skift databaser

At oprette en database lokalt via MongoDB Shell er ligetil, især hvis du har konfigureret en fjernklynge. Du kan oprette en ny database i MongoDB med brug kommando:

use db_name

Mens ovenstående kommando opretter en ny database, kan du bruge den til at skifte til en eksisterende database uden at oprette en ny fra bunden.

instagram viewer

2. Drop database

Skift først til den database, du vil droppe ved hjælp af brug kommando som tidligere. Slip derefter databasen ved hjælp af dropDatabase() kommando:

use db_name
db.dropDatabase()

3. Opret en samling

Skift til måldatabasen for at oprette en samling. Brug createCollection() nøgleord for at lave en ny MongoDB-kollektion:

db.createCollection("collection_name")

Erstatte samlingsnavn med dit valgte samlingsnavn.

4. Indsæt dokument i en samling

Mens du sender data til en samling, kan du indsætte et enkelt dokument eller en række dokumenter.

Sådan indsætter du et enkelt dokument:

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

Du kan også bruge ovenstående metode til at indsætte en række dokumenter med ét ID:

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

For at indsætte mange dokumenter på én gang, hvor hver har separate ID'er, skal du bruge indsæt Mange søgeord:

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

5. Hent alle dokumenter fra en samling

Du kan forespørge alle dokumenter fra en samling ved hjælp af Find() søgeord:

db.collection_name.find()

Ovenstående returnerer alle dokumenter i den angivne samling:

Du kan også begrænse de returnerede data til et bestemt antal. For eksempel kan du bruge følgende kommando til kun at få de første to dokumenter:

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

6. Filtrer dokumenter i en samling

Der er mange måder at filtrere dokumenter på i MongoDB. Overvej for eksempel følgende data:

Hvis du kun forespørger efter et bestemt felt i et dokument, skal du bruge Find metode:

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

Ovenstående returnerer alle dokumenter, hvor værdien af Kan lide er Wordle. Den udsender kun navnene og ignorerer dokument-id'et.

Du kan også filtrere en samling efter en numerisk faktor. Lad os sige, at du vil have navnene på alle brugere, der er ældre end 21, så brug $gt operatør:

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

Outputtet ser således ud:

Prøv at udskifte Find med find en for at se, hvad der sker. Der er dog mange andre filtreringssøgeord:

  • $lt: Alle værdier mindre end den angivne.
  • $gte: Værdier lig med eller større end den angivne.
  • $lte: Værdier, der er mindre end eller lig med den definerede.
  • $ækv: Henter alle værdier lig med den angivne.
  • $ne: Alle værdier er ikke lig med den angivne.
  • $in: Brug dette, når du forespørger baseret på et array. Den får alle værdier, der matcher alle elementerne i arrayet. Det ni $ søgeord gør det modsatte.

7. Sorter forespørgsler

Sortering hjælper med at arrangere forespørgslen i en bestemt rækkefølge. Du kan sortere i faldende eller stigende rækkefølge. Husk, at sortering kræver en numerisk reference.

For eksempel for at sortere i stigende rækkefølge:

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

For at sortere ovenstående forespørgsel i faldende rækkefølge skal du erstatte "1" med "-1."

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

8. Opdater et dokument

MongoDB-opdateringer kræver, at atomoperatorer angiver, hvordan du vil have opdateringen udført. Her er en liste over almindeligt anvendte atomoperatorer, som du kan parre med en opdateringsforespørgsel:

  • $sæt: Tilføj et nyt felt eller skift et eksisterende felt.
  • $skub: Indsæt et nyt element i et array. Sæt den sammen med $ hver operatør til at indsætte mange elementer på én gang.
  • $træk: Fjern et element fra et array. Brug den med $in at fjerne mange genstande på én gang.
  • $unset: Fjern et felt fra et dokument.

Sådan opdaterer du et dokument og tilføjer et nyt felt, f.eks.:

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

Ovenstående opdaterer det angivne dokument som vist:

Fjernelse af e-mail-feltet er ligetil med $unset operatør:

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

Overvej følgende eksempeldata:

Du kan indsætte et element i den eksisterende genstande matrixfelt ved hjælp af $skub operatør:

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

Her er outputtet:

Brug $ hver operatør for at indsætte mange elementer på én gang:

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

Her er outputtet:

Som nævnt er $træk operatør fjerner et element fra et array:

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

De opdaterede data ser således ud:

Inkluder $in nøgleord for at fjerne mange elementer i et array på én gang:

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

9. Slet et dokument eller et felt

Det sletOne eller sletMange søgeord kasserer et dokument fra en samling. Brug sletOne for at fjerne et dokument baseret på et specificeret felt:

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

Hvis du vil slette mange dokumenter med nøgler til fælles, så brug sletMange i stedet. Forespørgslen nedenfor sletter alle dokumenter, der indeholder Skak som deres Kan lide.

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

10. Indekseringsoperation

Indeksering forbedrer forespørgselsydeevne ved at strømline antallet af dokumenter, MongoDB skal scanne. Det er ofte bedst at oprette et indeks over felter, du oftere forespørger på.

MongoDB indeksering ligner hvordan du bruge indekser til at optimere SQL-forespørgsler. For eksempel at oprette et stigende indeks på Navn Mark:

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

Sådan viser du dine indekser:

db.collection.getIndexes()

Ovenstående er kun en præambel. Der er flere andre metoder til oprettelse af et indeks i MongoDB.

11. Aggregation

Aggregeringspipelinen, en forbedret version af MapReduce, giver dig mulighed for at køre og gemme komplekse beregninger inde fra MongoDB. I modsætning til MapReduce, som kræver, at kortet og reduceringsfunktionerne skrives adskilt JavaScript-funktioner, aggregering er ligetil og bruger kun indbyggede MongoDB-metoder.

Overvej f.eks. følgende salgsdata:

Ved at bruge MongoDB's aggregering kan du beregne og gemme det samlede antal solgte produkter for hver kategori som følger:

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

Ovenstående forespørgsel returnerer følgende:

Master MongoDB-forespørgsler

MongoDB tilbyder mange forespørgselsmetoder, herunder funktioner til at forbedre forespørgselsydeevnen. Uanset dit programmeringssprog er ovenstående forespørgselsstrukturer rudimentære til at interagere med en MongoDB-database.

Der kan dog være nogle uoverensstemmelser i basissyntakser. For eksempel, mens nogle programmeringssprog som Python genkender slangehylstre, bruger andre, inklusive JavaScript, kamelhuset. Sørg for at undersøge, hvad der virker for din valgte teknologi.