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"