11 MongoDB-forespørgsler og operationer, du skal kende

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.

DAGENS MUO-VIDEO

RUL FOR AT FORTSÆTTE MED INDHOLD

Uanset om du leder efter effektivt at hente og manipulere data, implementere robuste datamodeller eller bygge responsive applikationer, vil en dyb forståelse af almindelige MongoDB-forespørgsler og operationer uden tvivl forbedre dine 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 kommandoen brug:

 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.

2. Drop Database

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

 use db_name
db.dropDatabase()

3. Opret en samling

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

 db.createCollection("collection_name")

Erstat samlingsnavn med dit valgte samlingsnavn.

  9 bedste AP-automatiseringsværktøjer (Accounts Payable) i 2022

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 insertMany nøgleordet:

 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 at bruge søgeordet find():

 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 søgemetoden:

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

Ovenstående returnerer alle dokumenter, hvor værdien af ​​Likes 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 ældre end 21, så brug $gt-operatoren:

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

Outputtet ser således ud:

Prøv at erstatte find med findOne 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.
  • $eq: Får 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. Nøgleordet $nin gør det modsatte.
  Sådan videresender du en besked i signal

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:

  • $set: Tilføj et nyt felt eller skift et eksisterende felt.
  • $push: Indsæt et nyt element i et array. Par det med $each-operatøren for at indsætte mange elementer på én gang.
  • $pull: Fjern et element fra et array. Brug det med $in til at fjerne mange elementer 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-operatoren:

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

Overvej følgende eksempeldata:

Du kan indsætte et element i det eksisterende element-arrayfelt ved at bruge $push-operatoren:

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

Her er outputtet:

Brug $each operatoren til at indsætte mange elementer på én gang:

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

Her er outputtet:

  Er Putlocker lovlig og sikker at bruge? Det gode og det dårlige

Som nævnt fjerner $pull-operatøren et element fra et array:

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

De opdaterede data ser således ud:

Inkluder søgeordet $in 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

Nøgleordet deleteOne eller deleteMany kasserer et dokument fra en samling. Brug deleteOne til at fjerne et dokument baseret på et specificeret felt:

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

Hvis du ønsker at slette mange dokumenter med nøgler til fælles, så brug deleteMany i stedet. Forespørgslen nedenfor sletter alle dokumenter, der indeholder skak som deres likes.

 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 bruger indekser til at optimere SQL-forespørgsler. For eksempel, for at oprette et stigende indeks i feltet Navn:

 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 at oprette 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 skrivning af kortet og reduceringsfunktionerne i separate JavaScript-funktioner, er aggregering 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.