Få et grep om MongoDB-spørringer og operasjoner ved hjelp av denne praktiske guiden.
MongoDB er en av de mest ettertraktede og beundrede NoSQL-databasene for faglig utvikling. Dens fleksibilitet, skalerbarhet og evne til å håndtere store datamengder gjør den til et toppvalg for moderne applikasjoner. Hvis du vil mestre MongoDBs vanlige spørsmål og operasjoner, er du på rett sted.
Enten du ønsker å effektivt hente og manipulere data, implementere robuste datamodeller eller bygge responsive applikasjoner, å tilegne seg en dyp forståelse av vanlige MongoDB-spørringer og operasjoner vil utvilsomt forbedre din ferdigheter.
1. Opprett eller bytt databaser
Det er enkelt å lage en database lokalt via MongoDB Shell, spesielt hvis du har satt opp en ekstern klynge. Du kan opprette en ny database i MongoDB med bruk kommando:
use db_name
Mens kommandoen ovenfor oppretter en ny database, kan du bruke den til å bytte til en eksisterende database uten å opprette en ny fra bunnen av.
2. Slipp databasen
Bytt først til databasen du vil droppe ved å bruke
bruk kommando som tidligere. Slipp deretter databasen ved å bruke dropDatabase() kommando:use db_name
db.dropDatabase()
3. Opprett en samling
For å opprette en samling, bytt til måldatabasen. Bruke createCollection() nøkkelord for å lage en ny MongoDB-samling:
db.createCollection("collection_name")
Erstatte samlingsnavn med ditt valgte samlingsnavn.
4. Sett inn dokument i en samling
Mens du sender data til en samling, kan du sette inn et enkelt dokument eller en rekke dokumenter.
Slik setter du inn et enkelt dokument:
db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})
Du kan også bruke metoden ovenfor for å sette inn en rekke dokumenter med én ID:
db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])
For å sette inn mange dokumenter samtidig, der hver har separate IDer, bruk sett innMange nøkkelord:
db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])
5. Få alle dokumenter fra en samling
Du kan spørre etter alle dokumenter fra en samling ved å bruke finne() nøkkelord:
db.collection_name.find()
Ovennevnte returnerer alle dokumentene i den angitte samlingen:
Du kan også begrense de returnerte dataene til et spesifikt antall. For eksempel kan du bruke følgende kommando for å få bare de to første dokumentene:
db.collection_name.find().limit(2)
6. Filtrer dokumenter i en samling
Det er mange måter å filtrere dokumenter på i MongoDB. Vurder for eksempel følgende data:
Hvis du bare spør etter et spesifikt felt i et dokument, bruk finne metode:
db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})
Ovennevnte returnerer alle dokumenter hvor verdien av Liker er Wordle. Den sender bare ut navnene og ignorerer dokument-IDen.
Du kan også filtrere en samling etter en numerisk faktor. Si at du ønsker å få navnene på alle brukere over 21 år, bruk $gt operatør:
db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})
Utgangen ser slik ut:
Prøv å erstatte finne med Finn én for å se hva som skjer. Det er imidlertid mange andre filtreringssøkeord:
- $lt: Alle verdier mindre enn den spesifiserte.
- $gte: Verdier lik eller større enn den angitte.
- $lte: Verdier som er mindre enn eller lik den definerte.
- $eq: Får alle verdier lik den angitte.
- $ne: Alle verdier som ikke er lik den angitte.
- $in: Bruk denne når du spør basert på en matrise. Den får alle verdier som samsvarer med alle elementene i matrisen. De $nin nøkkelord gjør det motsatte.
7. Sorter spørringer
Sortering hjelper til med å ordne spørringen i en bestemt rekkefølge. Du kan sortere i synkende eller stigende rekkefølge. Husk at sortering krever en numerisk referanse.
For eksempel, for å sortere i stigende rekkefølge:
db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})
For å sortere søket ovenfor i synkende rekkefølge, erstatt "1" med "-1."
db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})
8. Oppdater et dokument
MongoDB-oppdateringer krever at atomoperatører spesifiserer hvordan du vil ha oppdateringen utført. Her er en liste over ofte brukte atomoperatorer du kan pare med en oppdateringsforespørsel:
- $sett: Legg til et nytt felt eller endre et eksisterende felt.
- $trykk: Sett inn et nytt element i en matrise. Par den med $hver operatør for å sette inn mange elementer samtidig.
- $trekk: Fjern et element fra en matrise. Bruk den med $in for å fjerne mange elementer på en gang.
- $unset: Fjern et felt fra et dokument.
For å oppdatere et dokument og legge til et nytt felt, for eksempel:
db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})
Ovennevnte oppdaterer det angitte dokumentet som vist:
Å fjerne e-postfeltet er enkelt med $unset operatør:
db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})
Vurder følgende eksempeldata:
Du kan sette inn et element i den eksisterende gjenstander array-feltet ved å bruke $trykk operatør:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})
Her er utgangen:
Bruke $hver operatør for å sette inn mange elementer samtidig:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})
Her er utgangen:
Som nevnt, $trekk operatør fjerner et element fra en matrise:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})
De oppdaterte dataene ser slik ut:
Inkluder $in nøkkelord for å fjerne mange elementer i en matrise på en gang:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }})
9. Slett et dokument eller et felt
De slettOne eller slettMange nøkkelord kaster et dokument fra en samling. Bruk slettOne for å fjerne et dokument basert på et spesifisert felt:
db.collection_name.deleteOne({"Name":"IDNoble"})
Hvis du ønsker å slette mange dokumenter med felles nøkler, bruk slettMange i stedet. Spørringen nedenfor sletter alle dokumenter som inneholder Sjakk som deres Liker.
db.collection.deleteMany({"Likes":"Chess"})
10. Indekseringsoperasjon
Indeksering forbedrer søkeytelsen ved å strømlinjeforme antallet dokumenter MongoDB trenger å skanne. Det er ofte best å lage en indeks på felt du spør oftere etter.
MongoDB-indeksering ligner på hvordan du bruke indekser for å optimalisere SQL-spørringer. For eksempel, for å lage en stigende indeks på Navn felt:
db.collection.createIndex({"Name":1})
Slik viser du indeksene dine:
db.collection.getIndexes()
Ovenstående er kun en ingress. Det finnes flere andre metoder for lage en indeks i MongoDB.
11. Aggregasjon
Aggregeringsrørledningen, en forbedret versjon av MapReduce, lar deg kjøre og lagre komplekse beregninger fra MongoDB. I motsetning til MapReduce, som krever at kartet og reduseringsfunksjonene skrives separat JavaScript-funksjoner, aggregering er enkel og bruker bare innebygde MongoDB-metoder.
Vurder for eksempel følgende salgsdata:
Ved å bruke MongoDBs aggregering kan du beregne og lagre det totale antallet solgte produkter for hver kategori som følger:
db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])
Spørringen ovenfor returnerer følgende:
Master MongoDB Queries
MongoDB tilbyr mange spørringsmetoder, inkludert funksjoner for å forbedre spørringsytelsen. Uavhengig av programmeringsspråket ditt, er de ovennevnte spørringsstrukturene rudimentære for å samhandle med en MongoDB-database.
Det kan imidlertid være noen avvik i basissyntakser. For eksempel, mens noen programmeringsspråk som Python gjenkjenner slangevesker, bruker andre, inkludert JavaScript, kamelvesken. Sørg for at du undersøker hva som fungerer for den valgte teknologien.