Databaser, collections och namnrymder
Skapa en databas, lägg till collections och förstå hur MongoDB organiserar data på namnrymdsnivå.
Databaser, collections och namnrymder är en gratis lektion i MongoDB Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för MongoDB Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i MongoDB Academy innehåller totalt 4 lektioner.
MongoDB:s hierarki i tre nivåer
MongoDB organiserar data i tre nivåer: Database, Collection, Document. Det motsvarar SQL:s databas, tabell och rad — och en server kan innehålla många av varje.
Vad är en namnrymd?
En namnrymd namnger en samling genom att kombinera databasens och samlingens namn med en punkt, till exempel myapp.users. Du ser den här notationen i loggar och i resultat från explain.
// Namespace: database.collection
// 'shop' database, 'products' collection:
use shop
db.products.find({})
// MongoDB internally refers to this as 'shop.products'
// You can also reference it explicitly:
db.getSiblingDB('shop').getCollection('products').find({})Byta och skapa databaser
I mongosh byter use databas. Det finns inget CREATE DATABASE — MongoDB skapar databasen först när den behövs, i samma ögonblick som du infogar ditt första dokument. Koden visar hur.
// Switch to (or create) a database
use myNewApp
// 'myNewApp' doesn't exist yet - no error, but not visible in 'show dbs'
// Insert a document to materialize the database
db.users.insertOne({ name: 'Alice' });
// Now 'myNewApp' appears:
show dbs
// admin 0.000GB
// local 0.000GB
// myNewApp 0.000GBSystemdatabaser: admin, local, config
MongoDB har tre systemdatabaser: admin för användare och roller, local för replikeringsdata och config för metadata om sharded-kluster. Bra att känna igen, men låt dem vara.
// View all databases on the server
show dbs
// admin 0.000GB
// config 0.000GB
// local 0.004GB
// shop 0.012GB
// myapp 0.008GB
// List databases programmatically
db.adminCommand({ listDatabases: 1 });Skapa samlingar uttryckligen
Använd createCollection när du behöver särskilda alternativ från början — capped, time-series, clustered eller en schemavaliderare. Koden skapar en samling med valideringsregler.
// Create a collection with a JSON Schema validator
db.createCollection('products', {
validator: {
$jsonSchema: {
bsonType: 'object',
required: ['name', 'price'],
properties: {
name: { bsonType: 'string' },
price: { bsonType: 'number', minimum: 0 }
}
}
}
});Visa och granska samlingar
Några kommandon låter dig utforska databasen: visa samlingar, hämta detaljerad information och kontrollera lagringsstatistik. show collections är det snabba kommandot. Koden visar fler.
use shop
show collections
// orders
// products
// users
db.getCollectionInfos();
// Returns array of {name, type, options, idIndex} per collection
db.orders.stats().count;
// 15234
db.orders.totalIndexSize();
// 2359296 (bytes)Byta namn på och ta bort samlingar
Du kan byta namn på en samling direkt eller ta bort den permanent. Att ta bort en samling går inte att ångra — det finns ingen papperskorg, så säkerhetskopiera först i produktion.
// Rename a collection
db.oldUsers.renameCollection('users');
// { ok: 1 }
// Drop a collection - IRREVERSIBLE
db.tempData.drop();
// true
// Drop the entire database - EXTREMELY DANGEROUS
// db.dropDatabase();
// Use only in development or with full backupFlera klienter med databaser
För SaaS-appar kan flerklientstöd innebära en databas per kund för stark isolering, eller en gemensam samling som filtreras med ett tenantId-fält. Koden visar båda alternativen.
// Option 1: Database-per-tenant
const db = client.db('tenant_' + tenantId);
db.users.find({});
// Each tenant has completely isolated data
// Option 2: Shared collection with tenantId field
const db = client.db('saas_app');
db.users.find({ tenantId: tenantId });
// All tenants share one collection, filtered by tenantIdBästa praxis för namn på samlingar
Några namngivningsvanor förebygger problem: var konsekvent, använd substantiv i plural som users och undvik specialtecken. Bra namnkonventioner gör koden lättare att läsa.
// Good collection names
db.users.find({});
db.order_items.find({});
db.productCategories.find({});
// Avoid these
db['$sales'].find({}); // $ prefix causes issues
db['system.logs'].find({}); // reserved prefix
db['my.collection'].find({}); // dot in name causes confusionLagringsmotorn WiredTiger
MongoDB:s standardmässiga lagringsmotor är WiredTiger. Den tillåter många samtidiga skrivningar utan blockering, komprimerar data på disk och journalför skrivningar så att krascher inte leder till dataförlust.
// Check current storage engine
db.serverStatus().storageEngine;
// { name: 'wiredTiger', supportsCommittedReads: true, ... }
// Collection stats show compression savings
db.orders.stats();
// storageSize: 2097152 (compressed on disk)
// size: 8388608 (uncompressed logical size)Förstå oplog
oplog är en särskild logg över alla skrivningar i en replikuppsättning. Sekundärnoder återspelar den för att hålla sig synkroniserade, och den driver även MongoDB:s Change Streams i realtid.
// Inspect oplog in mongosh (replica set members only)
use local
db.oplog.rs.find().sort({ $natural: -1 }).limit(3);
// { op: 'i', ns: 'shop.orders', o: { _id: ..., ... } }
// op: 'i'=insert, 'u'=update, 'd'=delete, 'c'=commandSnabbkontroll
Testa din förståelse av begreppen MongoDB och NoSQL Databases från den här lektionen.
Lektionssammanfattning
Du har lärt dig att MongoDB organiserar data som Database, Collection, Document, att databaser skapas först när de behövs och att WiredTiger hanterar lagringen. Nästa steg: skalet mongosh.
Lär dig JavaScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Databaser, collections och namnrymder” gratis?
Ja – hela texten till ”Databaser, collections och namnrymder” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i MongoDB Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i MongoDB Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Databaser, collections och namnrymder”?
Skapa en databas, lägg till collections och förstå hur MongoDB organiserar data på namnrymdsnivå. Ni övar på MongoDB Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig MongoDB Academy?
Du behöver inga förkunskaper. Utbildningen i MongoDB Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Databaser, collections och namnrymder”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här MongoDB Academy-lektionen?
Ja. Varje MongoDB Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Vad är ett BSON-dokument?
- Collections kontra SQL-tabeller
- Databaser, collections och namnrymder
- Grunderna i mongosh-skalet