Tag 10
1 Dokumentationsaufträge
1.1 Dokumentation zur Übung "Installation MongoDB und Konfiguration"
1.1.1 Recherche zu MongoDB
Grundsätzliches
MongoDB wurde 2009 publiziert und ist (grösstenteils) Open-Source. Es ist eine Document Database, welche in C++ geschrieben ist. Der Name entstand vom Begriff humongous, welches übersetzt gigantisch heisst.
Die Dokumente werden JSON-ähnlich verwaltet und können somit in komplexe Hierachien verschatelt werden.
Das Unternehmen 10gen hat im Jahr 2007 mit der Entwicklung angefangen und es 2009 erstmals publiziert. Das Unternehmen heisst siet 2013 MongoDB, Inc.
Begriffe rundum MongoDB
RDBMS | MongoDB |
---|---|
Database | Database |
Table | Collection |
Tuple/Row | Document |
Column | Field |
Table Join | Embedded Documents |
Primary Key | Primary Key* |
*MongoDB erstehlt standardmässig mit einen Primary Key mit dem Namen _id
Features
- Datenbanken sind wie folgt aufgebaut:
Collection > Document > Field - Die Struktur der Documents sind ähnlich zu Programmiersprachen/JSON
- Die Struktur muss nicht vordefiniert werden
- Datenmodelle können hierarchisch gespeichert werden und Arrays können direkt gespeichert werden
- MongoDB ist für Skalierbarkeit gemacht. Es kann auf über 100 Nodes mit mehreren Millionen Documents genutzt werden
Beispielstruktur
{
_id: <ObjectId>
field1: value1,
field2: value2,
field3: value3,
fieldN: valueN
}
Die _id
ist einer eindeutiger Identifier und könnte so aussehen: 563479cc8a8a4246bd27d784
1.1.2 Voraussetzungen der Installation (VM)
- !!! Auf dem Windows-Host muss Hyper-V und VBS deaktiviert sein, um MongoDB 5.0+ zu nutzen. (genaueres in der Installation zu lesen) !!!
- MongoDB kann von der offiziellen Seite geladen werden. Dafür muss zuerst der GPG Key und das Repo heruntergeladen werden.
- Dependencies
1.1.3 Prozess der Installation (Wie/Was habe ich es installiert?)
- (Optional) Falls noch nie ein Key heruntergeladen wurde, Tools zuerst installieren
sudo apt install wget curl gnupg2 software-properties-common apt-transport-https ca-certificates lsb-release
- GPG Key herunterladen
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-6.gpg
- Update-Source eintragen
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
- Update-Sourcen aktualisieren
sudo apt update
- MongoDB installieren
sudo apt-get install -y mongodb-org
- MongoDB-Dienst starten und Status überprüfen
sudo systemctl start mongod
sudo systemctl status mongod
Falls der Dienst auf failed
steht und signal=ILL
ist, diese Anleitung befolgen um es zum Laufen zu bringen.
1.1.4 Test der Installation
Den Status von MongoDB per systemctl
überprüfen
mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2023-04-29 20:28:20 UTC; 4s ago
Docs: https://docs.mongodb.org/manual
Main PID: 2793 (mongod)
Memory: 224.2M
CPU: 720ms
CGroup: /system.slice/mongod.service
└─2793 /usr/bin/mongod --config /etc/mongod.conf
Apr 29 20:28:20 m239vm systemd[1]: Started MongoDB Database Server.
Version von MongoDB überprüfen
mongod --version
db version v6.0.5
Build Info: {
"version": "6.0.5",
"gitVersion": "c9a99c120371d4d4c52cbb15dac34a36ce8d3b1d",
"openSSLVersion": "OpenSSL 3.0.2 15 Mar 2022",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2204",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
Auch kann das Kapitel "Erste Schritte mit MongoDB" befolgt werden um die ersten Schritte mit MongoDB auszuführen. Dies kann zeigen, ob die Installation richtig funktioniert.
1.2 Dokumentation zur Übung "Erste Schritte mit MongoDB"
1.2.1 Starten und nutzen des Shell-Clients
Um mit MongoDB im Terminal zu arbeiten muss der Befehl mongosh
(ab Version 5.0, davor nur mongo
) ausgeführt werden. Mit dem Ausführen des Befehls wird eine lokale MongoDB-Instanz auf dem Port 27017 geöffnet.
Wichtige Parameter:
Parameter | Beschreibung |
---|---|
--nodb | Verhindert das Öffnen von Datenbanken in der Shell |
--port <port> | Port für Verbindung |
--host <host> | Host für Verbindung |
--help | Zeigt weitere Parameter und eine Beschreibung |
--username <username> | Mit angegebenen Benutzer anmelden |
--password <password> | Passwort von angegeben Benutzer |
1.2.2 Datenbank erstellen
Um eine Datenbank oder zu nutzen muss der Befehl use
genutzt werden. MongoDB merjt selbst ob die Datenbank bereits besteht oder nicht. Besteht sie nicht, wird eine erstellt und falls sie bereits besteht wird die Datenbank genutzt. Standardmässig startet MongoDB immer in die test
-DB. Somit ist es wichtig bevor man z.B. eine Collection erstellt, dass die richtige Datenbank ausgewählt ist.
use meinedatenbank
Der Befehl db
zeigt die momentan genutzte Datenbank an.
1.2.3 Collection erstellen
Nachdem eine Datenbank genutzt wird, kann eine Collection erstellt werden. Eine Collection ist mit einem Table zu vergleichen. In der Collection werden später JSON-Daten (die JSON Daten werden zu BSON-Daten umgewandelt -> binäres JSON) gespeichert.
db.createCollection("meinecollection")
1.2.4 Dokumente erstellen
Um Dokumente zu erstellen, gibt es drei verschiedene Methoden
.insertOne()
.insertMany()
.insert()
.insertOne()
: fügt ein Dokument der Colletion hinzuinsertMany()
: fügt mehrere verschiedene Dokumente der Collection hinzuinsert()
: fügt ein oder mehrere Dokumente der Collection hinzu
Folgendes Beispiel fügt ein Dokument mit den Informationen Name, Alter und Geschlecht ein:
db.meinecollection.insertOne(
{
Name: "Name",
Alter: 28,
Geschlecht: "männlich"
}
)
MongoDB erstellt für dieses Dokument automatisch eine _id
. Diese ist einzigartig und kann daher zur Identifikation von Dokumenten genutzt werden.
1.2.5 Dokumente verwalten
Um Dokumente zu verändern, müssen diese zuerst identifiziert werden. Dafür kann der Befehl find()
genutzt werden. So kann das vorherige Beispiel wie folgt gefunden werden.
db.meinecollection.find( { Name: "Name", Alter: 28 } )
Um ein Dokument zu ändern, muss der Befehl update()
genutzt werden. Für diesen Befehl muss als erstes Attribut den zu verändernden Wert angegeben werden. Das zweite Attribut ist der neue Wert. Zum neuen Attribut muss die Variable $set
mitgegeben werden.
db.meinecollection.update(
{ Alter: 28 },
{
$set: { Alter: 30 }
}
)
Um Dokumente zu löschen, muss der Befehl deleteOne
(bei Versionen älter als 5.0 heisst er remove
) genutzt werden. Um etwas zu löschen, muss dem Befehl die Informationen mitgegeben werden. Ist eine Information in mehreren Dokumenten enthalten, werden alle diese Dokumente gelöscht. Daher umso präziser, desto bester (am Besten die _id
nutzen). Folgendes Beispiel löscht alle Dokumente mit der Information Alter, welche auf 30 steht.
db.meinecollection.deleteOne ( { Alter: 30 } )
Um nur den ersten Eintrag mit der übereinstimmenden Information zu löschen, kann der justOne
-Parameter mitgegeben werden.
db.meinecollection.deleteOne ( { Alter: 30 }, 1 )
Gute Cheat Sheets für MongoDB können auf der offiziellen MongoDB-Seite oder auf diesem GitHub Gist gefunden werden.