Zum Hauptinhalt springen

MongoDB

Installation

Lokaler Server

Windows:

.msi von MongoDB Community Server Download herunterladen und ausführen

MongoDB Compass

Wird standardmässig mit dem Community-Server installiert. Dies ist eine GUI für die Verwaltung des MongoDB-Servers.

MongoDB Shell

Konsolen-Anwendung, Command-Line Interface

Windows:

.msi von MongoDB Shell Download herunterladen und ausführen

MongoDB Database Tools

Windows:

.msi von MongoDB Command Line Database Tools Download herunterladen und ausführen

Grundlagen

Standard-Port für MongoDB-Server: localhost:27017

Ordner des MongoDB-Servers: C:\Program Files\MongoDB\Server\8.0

Ordner der MongoDB Database Tools: C:\Program Files\MongoDB\Tools\100\bin

Standard-Datenbanken:

  • admin
  • config
  • local

MongoDB-Server

Server starten

  1. CMD als Administrator öffnen
  2. net start MongoDB

Server stoppen

  1. CMD als Administrator öffnen
  2. net stop MongoDB

Shell

Die Shell kann im Terminal mit mongosh oder über das Programm MongoDBCompass geöffnet werden.

Grundlegende Befehle

Datenbanken:

BefehlBedeutung
show databases / show dbsalle erstellten Datenbanken anzeigen
use <dbname>beliebige Datenbank (auch noch nicht existierende) als aktive anwählen
db.dropDatabase()aktive Datenbank löschen

Collections:

BefehlBedeutung
show collectionsalle Collections anzeigen
db.createCollection("<collectionName>")Collection erstellen
db.<collectionName>.dropCollection löschen
db.<collectionName>.insertOne({"vorname": "muster", "alter": 40})Datensatz in Collection einfügen
db.<collectionName>.insertMany(<br/>{"vorname": "muster", "alter": 40}<br/>{"nachname": "nach")mehrere Datensätze in Collection einfügen

Datenbank erstellen

Eine Datenbank wird erst richtig erstellt, wenn zu dieser (als aktive Datenbank ausgewählt) das erste Mal ein Datensatz hinzugefügt wird.

use mydb
db.createCollection("firstCollection")
db.firstCollection.insertOne({"key": "value"})

Weiterführende Befehle

getSiblingDB()

Die Methode db.getSiblingDB("...") gibt eine andere Datenbank zurück, ohne dabei die Variable db in der aktuellen Shell zu ändern.

db.getSiblingDB("<database>")

Beispiel:

users = db.getSiblingDB('users')
records = db.getSiblingDB('records')

users.collection.countDocuments()
users.collection.findOne()

records.collection.countDocuments()
records.collection.findOne()

MongoDB Docs - db.getSiblingDB()

Objekte

ObjectId

  • Primärschlüssel für Objekte

Zusammensetzung:

  • 4-Byte Timestamp: Sekunden seit 1.1.1970
  • 5-Byte Zufallswert: eindeutig in Bezug auf Maschine und Prozess
  • 3-Byte Zähler: initialisiert mit Zufallswert

acknowledge

  • positive Rückmeldung
  • true oder false

Explaining

  • zeigt, wie eine Query ausgeführt wird
db.collection.explain().<method(...)>
db.collection.<method(...)>.explain()

Beispiel:

db.products.explain().remove( { category: "apparel" }, { justOne: true } )
db.products.remove( { category: "apparel" }, { justOne: true } ).explain("executionStats")

Rückgabe

executionStats

executionStats: {
executionSuccess: <boolean>,
nReturned: <int>,
executionTimeMillis: <int>,
totalKeysExamined: <int>,
totalDocsExamined: <int>,
executionStages: {
stage: <STAGE1>
nReturned: <int>,
executionTimeMillisEstimate: <int>,
opens: <int>, // Starting in MongoDB 5.1
closes: <int>, // Starting in MongoDB 5.1
works: <int>,
advanced: <int>,
needTime: <int>,
needYield: <int>,
saveState: <int>,
restoreState: <int>,
isEOF: <boolean>,
...
inputStage: {
stage: <STAGE2>,
nReturned: <int>,
...
numReads: <int>, // Starting in MongoDB 5.1
...
executionTimeMillisEstimate: <int>,
...
inputStage: {
...
}
}
},
allPlansExecution: [
{
nReturned: <int>,
executionTimeMillisEstimate: <int>,
totalKeysExamined: <int>,
totalDocsExamined:<int>,
executionStages: {
stage: <STAGEA>,
nReturned: <int>,
executionTimeMillisEstimate: <int>,
...
inputStage: {
stage: <STAGEB>,
...
inputStage: {
...
}
}
}
},
...
]
operationMetrics: {
cpuNanos: <int>,
cursorSeeks: <int>,
docBytesRead: <int>,
docBytesWritten: <int>,
docUnitsRead: <int>,
docUnitsReturned: <int>,
docUnitsWritten: <int>,
idxEntryBytesRead: <int>,
idxEntryBytesWritten: <int>,
idxEntryUnitsRead: <int>,
idxEntryUnitsWritten: <int>,
totalUnitsWritten: <int>,
keysSorted: <int>,
sorterSpills: <int>
}
}
EigenschaftBeschreibung
executionTimeMillisDauer der Ausführung in Millisekunden
totalKeysExaminedAnzahl der gescannten Index-Einträge
totalDocsExaminedAnzahl der untersuchten Dokumente
executionStagesBaum der Befehl-Phasen, input stages: thenStage, elseStage, innerStage, outerStage

MongoDB Docs - Explain Results - ExecutionStats

Datenbank erstellen Datenbank löschen Collection erstellen Collections auflisten

MongoDB Docs - db.collection.count

SQL vs. MongoDB Mapping

StackOverflow - How to query MongoDB with "like"