MongoDB ist eine NoSQL-Datenbank. Das heißt es speichert die Daten nicht in Tabellen sondern in Json-Dateien, im sichtbaren menschlichen Bereich. In Wahrheit erstellt MongoDB noch das BSON-Format. Die Befehle, um die Datenbank in MongoDB zu bedienen, sind andere, als die man von MySQL gewöhnt sind.
In dieser kleinen Anleitung möchte ich zeigen, wie man MongoDB benutzt. Die üblichen Anleitungen (nur in Englisch) zeigen nur die Installation und die weitere Bedienung des Programms hört dann auf. Ich schenke mir hier die Installationsanleitung und beschreibe wie man MongoDB benutzt. Ich bin selber noch Anfänger und taste mich langsam vorwärts. Aus diesem Grund wächst diese Anleitung Stück für Stück
Hinter MongoDB steht natürlich eine Firma. Sie wird auch auf dem Aktienmarkt gehandelt.
Um eine Datenbank in MongoDB zu erstellen, muss man einfach
use Datenbankname; also use Buechersammlung
Hier wird eine Datenbank erstellt. Allerdings speichert MongoDB diese noch nicht ab. Erst wenn man Daten in diese Datenbank eingibt, MongoDB akzeptiert Befehle ohne Semikolon und mit. Wenn man sich angewöhnt hat, Befehle mit Semikolon zu schreiben, kann man das hier auch machen.
In MongoDB heißen die Tabellen "collections".
Um eine Tabelle, eine Collection, zu erstellen gilt folgender Befehl:
db.createCollection("Name");
Name ist der Platzhalter für irgendeinen Namen. Bei zwei Namensteilen, dann einen Unterstrich einfügen, also Namen_Name.
Um eine Tabelle, eine Collection, zu erstellen gilt folgender Befehl:
db.createCollection("Name");
Name ist der Platzhalter für irgendeinen Namen. Bei zwei Namensteilen, dann einen Unterstrich einfügen, also Namen_Name.
Hier kann man alle Arten von Daten einfügen. Ich habe bislang nur einfache Daten, also Texte und Zahlen, eingeben.
db.Name.insertOne({Vorname: "Text", Nachname:"Text"});
Nach diesem Schema, natürlich mit anderen Titeln als Name kann man Daten einfügen. Anders als in MySQL gibt man auch nicht an, welcher Datentyp es sich um dabei handelt und auch die nicht die Länge. Beim Eingeben immer auf die Art der Klammersetzung achten (ganz wichtig und ob man das Komma eingefügt hat)
Man möchte auch mal schauen, was man da so eingegeben hat. Dazu gibt es eigentlich zwei Befehle. Der eine ist etwas unübersichtlich, gerade wenn man gerade anfängt. Daher zeige ich die Variante, wo die Datenbank, diese nun übersichtlich ausgibt.
db.Name.find().pretty();
Name ist der Name der Collection und dann werden die eingebenen Daten übersichtlich, untereinander präsentiert.
Also man hat ein Feld, wie in meinem Beispiel: "Inhalte" und möchte man mehrere Einträge einfügen, muss man ein Array einbauen.
Ein Array ist eine Auflistung von Daten. Das kennt man aus unzähligen Programmiersprachen.
Natürlich kann man alles ohne ein Array einfügen, aber dann funktioniert die Suche nicht richtig.Diesen Fehler habe ich schon gemacht. Aber als Anfänger darf man noch viele Fehler machen, denke ich.
Die Daten kann man von der Verpackung ablesen - von da habe ich auch entnommen. Daher sind sie auch kein Staatsgeheimnis.
db.REWE.insertOne({"Markenname": "Ja Schoko Dessert mit Sahne", "Menge": "200 Gramm", "Energie": "775 kJ", "Inhalt": ["Fett", "Kohlenhydrate", "Salz", "Eiweiß","Zucker" ]});
In dem obrigen Beispiel haben wir Einträge in ein Array gepackt. Wir können jetzt ganz einfach suchen lassen.
Wir sehen, wenn wir nach Zucker suchen, findet er viele Einträge. Die anderen hatte ich vorher schon eingetragen.Wasser gibt es in diesem Produkten nur einmal.
db.REWE.find({"Inhalt": "Wasser"});
Ohne dieses Array hätte Mongo nichts gefunden. Das hatte ich am Anfang und da sich diese Collection noch am Anfang befand, habe ich die Einträge gelöscht.
Um zum Beispiel alle Einträge eines Dokumentes zu löschen, gibt kann man dies mit einem einzigen Befehl machen.
Ich hatte eine Datenbank erstellt, wo ich alle meine Bewerbungen gespeichert hatte. Da ich nun in einem Job befinde, brauche ich alle Einträge nicht mehr. Ich möchte aber die Datenbank noch weiterhin erhalten.
db.IT.deleteMany({});
Nun kommt eine kurze Bestätigung, wie viele Einträge gelöscht worden ist.
Ich hatte nun Dokument (eine Collection) erstellt, aber in dieser Collection sollte es noch einen zusätzlichen Eintrag geben, der in den Einträgen nicht geben sollte.
Mit db.collection.update({vorhandes Feld: "vorhandener Eintrag"}, {$set: {"Neues Feld": "Neuer Eintrag"}}); kann man nun nur ein einziges Feld hinzufügen.
mongoimport -d dbname -c collectionname --type CSV --file xxx.csv --headerline
Hier mal ein praktisches Beispiel für einen Datentransfer zwischen zwei Datenbankmanagementsystemen.
Eine Übersicht aller verwendeten Datenbanken:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017")
for db in myclient.list_databases():
print(db)
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017")
mydb = myclient['organisation']
print("Übersicht der Collections\n ")
for coll in mydb.list_collection_names():
print(coll)
Stand der Seite über MongoDB: 12.02.2022