Få koll på MongoDB-frågor och operationer med hjälp av denna praktiska guide.
MongoDB är en av de mest eftertraktade och beundrade NoSQL-databaserna för professionell utveckling. Dess flexibilitet, skalbarhet och förmåga att hantera stora datamängder gör den till ett toppval för moderna applikationer. Om du vill bemästra MongoDB: s vanliga frågor och operationer är du på rätt plats.
Oavsett om du letar efter att effektivt hämta och manipulera data, implementera robusta datamodeller eller bygga responsivt applikationer, att få en djup förståelse för vanliga MongoDB-frågor och operationer kommer utan tvekan att förbättra din Kompetens.
1. Skapa eller byt databaser
Att skapa en databas lokalt via MongoDB Shell är enkelt, speciellt om du har konfigurerat ett fjärrkluster. Du kan skapa en ny databas i MongoDB med använda sig av kommando:
use db_name
Medan kommandot ovan skapar en ny databas kan du använda den för att byta till en befintlig databas utan att skapa en ny från början.
2. Släpp databas
Byt först till den databas du vill ta bort med hjälp av använda sig av kommandot som gjort tidigare. Släpp sedan databasen med hjälp av dropDatabase() kommando:
use db_name
db.dropDatabase()
3. Skapa en samling
För att skapa en samling, växla till måldatabasen. Använd createCollection() nyckelord för att skapa en ny MongoDB-kollektion:
db.createCollection("collection_name")
Byta ut samlingsnamn med ditt valda samlingsnamn.
4. Infoga dokument i en samling
När du skickar data till en samling kan du infoga ett enda dokument eller en mängd dokument.
Så här infogar du ett enda dokument:
db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})
Du kan också använda metoden ovan för att infoga en mängd dokument med ett ID:
db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])
För att infoga många dokument på en gång, där vart och ett har separata ID: n, använd infoga Många nyckelord:
db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])
5. Hämta alla dokument från en samling
Du kan fråga alla dokument från en samling med hjälp av hitta() nyckelord:
db.collection_name.find()
Ovanstående returnerar alla dokument i den angivna samlingen:
Du kan också begränsa returnerad data till ett specifikt antal. Till exempel kan du använda följande kommando för att bara hämta de två första dokumenten:
db.collection_name.find().limit(2)
6. Filtrera dokument i en samling
Det finns många sätt att filtrera dokument i MongoDB. Tänk på följande data, till exempel:
Om du bara frågar efter ett specifikt fält i ett dokument, använd hitta metod:
db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})
Ovanstående returnerar alla dokument där värdet av Gillar är Wordle. Den matar bara ut namnen och ignorerar dokument-ID: t.
Du kan också filtrera en samling med en numerisk faktor. Säg att du vill få namnen på alla användare äldre än 21, använd $gt operatör:
db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})
Utgången ser ut så här:
Prova att byta ut hitta med hitta en för att se vad som händer. Det finns dock många andra filtrerande sökord:
- $lt: Alla värden är mindre än det angivna.
- $gte: Värden lika med eller större än det angivna.
- $lte: Värden som är mindre än eller lika med det definierade.
- $eq: Får alla värden lika med det angivna.
- $ne: Alla värden är inte lika med det angivna.
- $in: Använd detta när du frågar baserat på en array. Den får alla värden som matchar något av objekten i arrayen. De nio dollar nyckelordet gör tvärtom.
7. Sortera frågor
Sortering hjälper till att ordna frågan i en specifik ordning. Du kan sortera i fallande eller stigande ordning. Tänk på att sortering kräver en numerisk referens.
Till exempel, för att sortera i stigande ordning:
db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})
För att sortera ovanstående fråga i fallande ordning, ersätt "1" med "-1".
db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})
8. Uppdatera ett dokument
MongoDB-uppdateringar kräver att atomoperatorer anger hur du vill att uppdateringen ska göras. Här är en lista över vanliga atomoperatorer som du kan koppla ihop med en uppdateringsfråga:
- $set: Lägg till ett nytt fält eller ändra ett befintligt fält.
- $tryck: Infoga ett nytt objekt i en array. Para ihop den med $varje operatör för att infoga många objekt samtidigt.
- $dra: Ta bort ett objekt från en array. Använd den med $in för att ta bort många föremål på en gång.
- $unset: Ta bort ett fält från ett dokument.
Så här uppdaterar du ett dokument och lägger till ett nytt fält, till exempel:
db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})
Ovanstående uppdaterar det angivna dokumentet som visas:
Att ta bort e-postfältet är enkelt med $unset operatör:
db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})
Tänk på följande exempeldata:
Du kan infoga ett objekt i det befintliga föremål matrisfält med hjälp av $tryck operatör:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})
Här är utgången:
Använd $varje operatör för att infoga många objekt samtidigt:
db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})
Här är utgången:
Som nämnts $dra operatorn tar bort ett objekt från en array:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})
De uppdaterade uppgifterna ser ut så här:
Inkludera $in nyckelord för att ta bort många objekt i en array på en gång:
db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }})
9. Ta bort ett dokument eller ett fält
De raderaOne eller raderaMånga nyckelordet slänger ett dokument från en samling. Använda sig av raderaOne för att ta bort ett dokument baserat på ett angivet fält:
db.collection_name.deleteOne({"Name":"IDNoble"})
Om du vill radera många dokument med gemensamma nycklar, använd raderaMånga istället. Frågan nedan tar bort alla dokument som innehåller Schack som deras Gillar.
db.collection.deleteMany({"Likes":"Chess"})
10. Indexeringsoperation
Indexering förbättrar frågeprestanda genom att effektivisera antalet dokument som MongoDB behöver skanna. Det är ofta bäst att skapa ett index för fält som du frågar oftare efter.
MongoDB-indexering liknar hur du använda index för att optimera SQL-frågor. Till exempel, för att skapa ett stigande index på namn fält:
db.collection.createIndex({"Name":1})
Så här listar du dina index:
db.collection.getIndexes()
Ovanstående är bara en ingress. Det finns flera andra metoder för skapa ett index i MongoDB.
11. Aggregation
Aggregeringspipelinen, en förbättrad version av MapReduce, låter dig köra och lagra komplexa beräkningar inifrån MongoDB. Till skillnad från MapReduce, som kräver att man skriver kartan och reduceringsfunktionerna separat JavaScript-funktioner, aggregering är enkel och använder endast inbyggda MongoDB-metoder.
Tänk på följande försäljningsdata, till exempel:
Med MongoDB: s aggregering kan du beräkna och lagra det totala antalet sålda produkter för varje kategori enligt följande:
db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])
Ovanstående fråga returnerar följande:
Master MongoDB-frågor
MongoDB erbjuder många frågemetoder, inklusive funktioner för att förbättra frågeprestanda. Oavsett ditt programmeringsspråk är ovanstående frågestrukturer rudimentära för att interagera med en MongoDB-databas.
Det kan dock finnas vissa avvikelser i bassyntaxer. Till exempel, medan vissa programmeringsspråk som Python känner igen ormfodral, använder andra, inklusive JavaScript, kamelfodralet. Se till att du undersöker vad som fungerar för din valda teknik.