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
- CMD als Administrator öffnen
net start MongoDB
Server stoppen
- CMD als Administrator öffnen
net stop MongoDB
Shell
Die Shell kann im Terminal mit mongosh oder über das Programm MongoDBCompass geöffnet werden.
Grundlegende Befehle
Datenbanken:
| Befehl | Bedeutung |
|---|---|
show databases / show dbs | alle erstellten Datenbanken anzeigen |
use <dbname> | beliebige Datenbank (auch noch nicht existierende) als aktive anwählen |
db.dropDatabase() | aktive Datenbank löschen |
Collections:
| Befehl | Bedeutung |
|---|---|
show collections | alle Collections anzeigen |
db.createCollection("<collectionName>") | Collection erstellen |
db.<collectionName>.drop | Collection 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
trueoderfalse
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>
}
}
| Eigenschaft | Beschreibung |
|---|---|
| executionTimeMillis | Dauer der Ausführung in Millisekunden |
| totalKeysExamined | Anzahl der gescannten Index-Einträge |
| totalDocsExamined | Anzahl der untersuchten Dokumente |
| executionStages | Baum der Befehl-Phasen, input stages: thenStage, elseStage, innerStage, outerStage |
MongoDB Docs - Explain Results - ExecutionStats
Links
Datenbank erstellen Datenbank löschen Collection erstellen Collections auflisten