MongoDB Academy · leksjon

Det grunnleggende i mongosh-skallet

Bruk mongosh til å bytte database, liste samlinger og kjøre de første dokumentforespørslene interaktivt.

Leksjon 4 av 413 trinn

Det grunnleggende i mongosh-skallet er en gratis leksjon i MongoDB Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i MongoDB Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i MongoDB Academy inneholder totalt 4 leksjoner.

Hva er mongosh?

mongosh er MongoDBs offisielle skall, bygget på Node.js — så De kan bruke moderne JavaScript direkte i skallet. Det er standardmåten å koble til fra kommandolinjen på.

# Install mongosh on macOS
brew install mongosh

# Connect to a local MongoDB instance
mongosh

# Connect to an Atlas cluster
mongosh 'mongodb+srv://user:pass@cluster0.abc.mongodb.net/myapp'

# Connect with explicit host and port
mongosh --host localhost --port 27017

Navigere i databaser og collections

Noen få kommandoer hjelper Dem med å finne frem: show dbs viser databaser, use bytter database, og show collections viser innholdet. Variabelen db er alltid den gjeldende databasen.

// Navigate in mongosh
show dbs
// admin   0.000GB
// myapp   0.008GB

use myapp
// switched to db myapp

db
// myapp

show collections
// users
// orders

Deres første innsetting

Det tar én linje å legge til det første dokumentet: insertOne. Metoden returnerer den nye _id-en, og en rask findOne bekrefter at dokumentet ble lagret. Koden går gjennom begge trinnene.

// Insert one document
db.users.insertOne({
  name: 'Alice',
  email: 'alice@example.com',
  age: 28,
  createdAt: new Date()
});
// { acknowledged: true, insertedId: ObjectId('64a2f3b1...') }

// Verify it was stored
db.users.findOne();
// { _id: ObjectId('64a2f3b1...'), name: 'Alice', ... }

Grunnleggende find()-søk

find returnerer alle dokumenter som samsvarer. Send inn et filter for å begrense resultatet, eller bruk findOne for nøyaktig ett dokument. Et tomt filter returnerer alt. Koden viser noen eksempler.

// Find all documents
db.users.find({});

// Find with an equality filter
db.users.find({ name: 'Alice' });

// findOne by _id
db.users.findOne({ _id: ObjectId('64a2f3b1...') });

// Find with multiple conditions (implicit AND)
db.users.find({ age: 28, active: true });

// Type 'it' in shell to get next 20 results

Telle og begrense resultater

Noen få hjelpere styrer hvor mye De får tilbake: countDocuments, samt limit og skip i et søk. Sammen danner limit og skip grunnlaget for paginering. Koden viser dem.

// Count active users
db.users.countDocuments({ active: true });
// 842

// Get first 5 users
db.users.find({}).limit(5);

// Skip first 10, get next 5 (page 3 of 5-per-page)
db.users.find({}).skip(10).limit(5);

// Fast approximate total
db.users.estimatedDocumentCount();
// 4823

Sortere søkeresultater

Kjed sammen sort for å sortere resultater — 1 for stigende og -1 for synkende rekkefølge. De kan også sortere etter flere felter samtidig som tie-breakere. Koden viser noen sorteringer.

// Sort by age descending (oldest first)
db.users.find({}).sort({ age: -1 });

// Sort by last name then first name
db.users.find({}).sort({ lastName: 1, firstName: 1 });

// Most recently created first
db.users.find({}).sort({ createdAt: -1 }).limit(10);

// Combined: find active users, sort by age, limit to 5
db.users.find({ active: true }).sort({ age: 1 }).limit(5);

Projections: velge felter

En projection velger hvilke felter som skal returneres — 1 for å inkludere og 0 for å utelate. Det reduserer båndbredde- og minnebruken når De ikke trenger alle feltene. Koden viser eksempler.

// Include only name and email (exclude everything else)
db.users.find({}, { name: 1, email: 1 });
// { _id: ObjectId('...'), name: 'Alice', email: 'alice@...' }

// Exclude _id too
db.users.find({}, { name: 1, email: 1, _id: 0 });
// { name: 'Alice', email: 'alice@...' }

// Exclude sensitive fields
db.users.find({}, { passwordHash: 0, ssn: 0 });

Pen utskrift og hjelpere i skallet

mongosh skriver automatisk ut resultater i et lesbart format. Nyttige hjelpere omfatter toArray, forEach, distinct og explain, som lar Dem se hvordan et søk kjøres. Koden viser dem.

// Get all distinct cities from user addresses
db.users.distinct('address.city');
// ['Chicago', 'London', 'Tokyo', ...]

// Iterate with forEach
db.users.find({ active: true }).forEach(user => {
  print(user.name + ' - ' + user.email);
});

// Check if query uses an index
db.users.find({ email: 'alice@test.com' }).explain('executionStats');

Kommandoer for rask oppdatering og sletting

De lærer full CRUD senere, men de viktigste metodene er updateOne, deleteOne og deleteMany. Bruk alltid $set i oppdateringer, ellers erstatter De hele dokumentet!

// Update a specific field (CORRECT: use $set)
db.users.updateOne(
  { email: 'alice@example.com' },
  { $set: { age: 29, updatedAt: new Date() } }
);

// Delete one document
db.users.deleteOne({ email: 'alice@example.com' });

// WARNING: This REPLACES the entire document (no $set):
// db.users.updateOne({ email: '...' }, { age: 29 });
// Now the document has ONLY { _id, age: 29 } !!!

Variabler og skripting i skallet

Siden mongosh er ekte JavaScript, kan De bruke variabler, løkker og skript til å automatisere oppgaver — langt kraftigere enn en enkel SQL CLI. Koden viser en løkke.

// Variable-driven query
const targetCity = 'Chicago';
const users = db.users.find({ 'address.city': targetCity }).toArray();
print('Users in ' + targetCity + ': ' + users.length);

// For loop to seed test data
for (let i = 1; i <= 10; i++) {
  db.products.insertOne({ name: 'Product ' + i, price: i * 10 });
}

// Run from CLI without entering the shell:
// mongosh mydb --eval "db.users.countDocuments({})"

Koble til Atlas fra skallet

For å koble til Atlas henter De tilkoblingsstrengen fra brukergrensesnittet — den bruker mongodb+srv, som finner klyngen via DNS. Lagre den i en miljøvariabel, ikke i skallhistorikken.

# Store URI in environment variable (never hard-code credentials)
export MONGODB_URI='mongodb+srv://alice:s3cr3t@cluster0.abc.mongodb.net'

# Connect from shell
mongosh $MONGODB_URI

# Switch to your app database
use myapp

# Verify connection
db.runCommand({ ping: 1 })
# { ok: 1 }

Kort test

Test forståelsen Deres av konseptene innen MongoDB og NoSQL-databaser fra denne leksjonen.

Oppsummering av leksjonen

De har lært at mongosh er et JavaScript-skall, at projections velger felter, og at De kan kjede sammen sort, limit og skip for å forme resultatene. Neste tema: sette inn dokumenter.

Gratis å komme i gang

Lær deg JavaScript med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Det grunnleggende i mongosh-skallet» gratis?

Ja – hele teksten i «Det grunnleggende i mongosh-skallet» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av MongoDB Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i MongoDB Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Det grunnleggende i mongosh-skallet»?

Bruk mongosh til å bytte database, liste samlinger og kjøre de første dokumentforespørslene interaktivt. Du øver på MongoDB Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med MongoDB Academy?

Ingen tidligere erfaring er nødvendig. MongoDB Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Det grunnleggende i mongosh-skallet»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne MongoDB Academy-leksjonen?

Ja. Alle MongoDB Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hva er et BSON-dokument?
  2. Collections kontra SQL-tabeller
  3. Databaser, samlinger og navnerom
  4. Det grunnleggende i mongosh-skallet
← Tilbake til MongoDB Academy