Für ge­wöhn­lich un­ter­schei­den sich die ver­schie­de­nen Da­ten­bank­mo­del­le – SQL oder NoSQL – in Sachen Kon­fi­gu­ra­ti­on und Bedienung deutlich. Dass Sie bei der Nutzung einer NoSQL-Lösung al­ler­dings nicht immer das gesamte, über die Jahre ge­sam­mel­te Know-how über re­la­tio­na­le Da­ten­bank­sys­te­me über den Haufen werfen müssen, stellt die Open-Source-Software MongoDB unter Beweis: Zwar grenzt sich die do­ku­men­ten­ori­en­tier­te Datenbank mit der flexiblen Spei­che­rung der Daten klar von Klas­si­kern wie MySQL ab, dennoch weisen die Modelle gewisse Ähn­lich­kei­ten auf, die Sie in unserer MongoDB Vor­stel­lung nachlesen können. Auch wenn Ab­fra­ge­spra­che und Be­fehls­syn­tax von MongoDB eine Um­ge­wöh­nung bedeuten, bereitet der Einstieg bzw. Umstieg erprobten SQL-Experten in der Regel keine großen Schwie­rig­kei­ten.

Im folgenden MongoDB-Tutorial setzen wir uns genauer mit der In­stal­la­ti­on, Kon­fi­gu­ra­ti­on und Ver­wal­tung des modernen Da­ten­bank­sys­tems am Beispiel von Ubuntu aus­ein­an­der.

Schritt 1: In­stal­la­ti­on

Sie finden die frei ver­füg­ba­re Open-Source-Edition „Community Server“ ebenso wie die kom­mer­zi­el­len En­ter­pri­se-Lösungen im Download-Center auf der of­fi­zi­el­len MongoDB-Website. Im ersten Schritt sollten Sie also die In­stal­la­ti­ons- bzw. Bi­när­da­tei­en für Ihr System her­aus­su­chen und her­un­ter­la­den. Da MongoDB platt­form­über­grei­fend ist, gibt es hier eine Auswahl aus ver­schie­de­nen Windows- und Linux-Systemen sowie OS X und Solaris. Auf einem Windows-Be­triebs­sys­tem wird die Datenbank einfach mithilfe der her­un­ter­ge­la­de­nen In­stal­la­ti­ons­da­tei in das ge­wünsch­te Ver­zeich­nis in­stal­liert. Windows-10-Nutzer können dafür die Version für Windows Server 2008 (64-bit) nehmen. Für Linux und Co. laden Sie wie üblich eine Ar­chiv­da­tei herunter, die Sie zunächst entpacken und im Anschluss mit dem Pa­ket­ma­na­ger in­stal­lie­ren. Je nach Dis­tri­bu­ti­on müssen Sie unter Umständen zunächst den MongoDB Public GPG Key im­por­tie­ren. Für Ubuntu wird dieser Au­then­ti­fi­zie­rungs­schlüs­sel benötigt, weshalb Sie diesen mit folgendem Befehl im­ple­men­tie­ren müssen:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

An­schlie­ßend updaten Sie die Liste des Pa­ket­ma­na­gers:

sudo apt-get update

… und in­stal­lie­ren MongoDB inklusive nütz­li­cher Ma­nage­ment-Tools:

sudo apt-get install -y mongodb-org

Schritt 2: Start des MongoDB-Servers

Das Stan­dard­in­stal­la­ti­ons­ver­zeich­nis /var/lib/mongodb und das Log-Ver­zeich­nis /var/log/mongodb können Sie optional in der Kon­fi­gu­ra­ti­ons­da­tei /etc/mongod.conf ändern. Mithilfe des folgenden Befehls starten Sie die Datenbank:

sudo service mongod start

Verwenden Sie statt des Pa­ra­me­ters start den Parameter stop, beenden Sie die Aus­füh­rung der Datenbank, restart sorgt für einen Neustart. Um zu über­prü­fen, ob MongoDB er­folg­reich gestartet wurde, genügt ein Blick in das Logfile /log/mongodb/mongod.log:

[initandlisten] waiting for connections on port <port>

Die Zeile verrät Ihnen, dass der Da­ten­bank­ser­ver in Betrieb ist und auf ein­ge­hen­de Ver­bin­dun­gen auf dem in der Kon­fi­gu­ra­ti­ons­da­tei de­fi­nier­ten Port (<port>) wartet. Stan­dard­mä­ßig wir hier Port 27017 verwendet.

Schritt 3: Start des Clients

Wenn der MongoDB-Server läuft, können Sie den je­wei­li­gen Client starten. Wir nutzen an dieser Stelle den stan­dard­mä­ßig ent­hal­te­nen Kom­man­do­zei­len-Client Mongo Shell, der auf Ja­va­Script basiert und für die Ad­mi­nis­tra­ti­on der Datenbank sowie den Zugriff und die Ak­tua­li­sie­rung des Da­ten­be­stands verwendet werden kann. Auf demselben System, auf dem die MongoDB-Anwendung aus­ge­führt wird, starten Sie den Client mit dem einfachen Terminal-Befehl:

mongo

Au­to­ma­tisch verbindet sich die Mongo Shell nun mit der laufenden MongoDB-Instanz auf dem lokalen Host und dem Port 27017. Natürlich können Sie diese Standard-Ver­bin­dungs­ein­stel­lun­gen mit den ent­spre­chen­den Pa­ra­me­tern ebenfalls anpassen. Diese und einige weitere wichtige Optionen sind in der folgenden Tabelle zu­sam­men­ge­fasst:

Parameter Be­schrei­bung
--shell Aktiviert das Shell-Interface, wodurch Sie nach Aus­füh­rung eines Befehls die ent­spre­chen­de Anzeige prä­sen­tiert bekommen.
--nodb Ver­hin­dert, dass sich die Mongo Shell mit einer Datenbank verbindet.
--port <port> Definiert den Port für die Ver­bin­dung.
--host <hostname> Definiert den Host für die Ver­bin­dung.
--help oder -h Zeigt Ihnen die Optionen an.
--username <username> oder -u <username> Sind Zu­gangs­be­rech­ti­gun­gen definiert, melden Sie sich auf diese Weise mit dem je­wei­li­gen Nut­zer­na­men (<username>) an.
--password <password> oder -p <password> Sind Zu­gangs­be­rech­ti­gun­gen definiert, melden Sie sich auf diese Weise mit dem je­wei­li­gen Passwort (<password>) an.

Die hier ver­wen­de­ten spitzen Klammern sind nicht Be­stand­teil des je­wei­li­gen Pa­ra­me­ters und er­schei­nen daher nicht im end­gül­ti­gen Befehl. Für die De­fi­ni­ti­on des Ports bedeutet das bei­spiels­wei­se, dass Ihre Eingabe fol­gen­der­ma­ßen aussieht, wenn Sie anstatt des Standard-Ports 27017 lieber den Port 40000 wählen wollen:

mongo --port 40000
Tipp: Managed MongoDB von IONOS

Mit Managed MongoDB von IONOS können Sie sich auf das We­sent­li­che kon­zen­trie­ren. Ob In­stal­la­ti­on, Betrieb oder War­tungs­ar­bei­ten, IONOS sorgt für einen zu­ver­läs­si­gen Betrieb Ihrer hoch­per­for­man­ten Da­ten­ban­ken.

Schritt 4: Eine Datenbank erstellen

Sobald MongoDB und der Client laufen, können Sie sich der Da­ten­ver­wal­tung und -be­ar­bei­tung widmen. Doch zuvor sollten Sie noch eine Datenbank erstellen – an­dern­falls werden die Samm­lun­gen (Coll­ec­tions) und Dokumente in der au­to­ma­tisch erzeugten test-Datenbank ge­spei­chert. Sie erzeugen eine Datenbank mit dem use-Kommando. Wollen Sie z. B. eine Datenbank mit dem Namen mei­ne­da­ten­bank erstellen, sieht der dazu passende Befehl so aus:

use meinedatenbank

Mit dem Befehl use wählen Sie außerdem eine bereits exis­tie­ren­de MongoDB-Datenbank aus, die Sie für die Da­ten­ver­ar­bei­tung nutzen möchten; mithilfe des kurzen Kommandos db über­prü­fen Sie, welche Datenbank derzeit aus­ge­wählt ist.

Schritt 5: Eine Coll­ec­tion erstellen

Im nächsten Schritt kreieren Sie eine erste Coll­ec­tion, also eine Sam­mel­map­pe für die ver­schie­de­nen BSON-Dokumente, in denen später die Daten ge­spei­chert werden sollen. Die Basis-Syntax hat dabei dieses Muster:

db.createCollection(<name>, { options } )

Der create-Befehl besitzt also die zwei Parameter name (Name der Coll­ec­tion) und options (optionale Optionen zum Kon­fi­gu­rie­ren der Coll­ec­tion). In den Optionen bestimmen Sie z. B., ob die in der Sammlung ent­hal­te­nen Dokumente in Ihrer Größe be­schränkt sein sollen (capped: true) oder ob die Coll­ec­tion eine Be­gren­zung in Bytes (size: <number>) bzw. in der Anzahl an Do­ku­men­ten (max: <number>) besitzen soll. Eine Coll­ec­tion mit dem Namen meine­coll­ec­tion, einer Byte-Be­gren­zung von 6.142.800 und maximal 10.000 zu­ge­las­se­nen Do­ku­men­ten würden Sie bei­spiels­wei­se mit folgendem Kommando erstellen (der Leerraum dient dabei einzig der Über­sicht­lich­keit):

db.createCollection ("meinecollection", { capped: true,
    size: 6142800,
    max: 10000 } )

Schritt 6: Dokumente in eine Coll­ec­tion einfügen

Nachdem die Sam­mel­map­pe angelegt wurde, können Sie diese mit Do­ku­men­ten füllen, wobei grund­sätz­lich drei ver­schie­de­ne Methoden verfügbar sind:

  • .insertOne()
  • .in­sert­Ma­ny()
  • .insert()

Sie fügen per Befehl also entweder nur ein Dokument (.insertOne), ver­schie­de­ne Dokumente (.in­sert­Ma­ny) oder ein oder mehrere Dokumente (.insert) hinzu. Im folgenden Beispiel zeigen wir Ihnen einen einfachen Da­ten­bank­ein­trag, der aus den drei In­for­ma­tio­nen Name, Alter und Ge­schlecht besteht und als Dokument in die in Schritt 5 angelegte Sam­mel­map­pe meine­coll­ec­tion eingefügt wird:

db.meinecollection.insertOne(
{
        Name: "Name",
        Alter: 28,
        Geschlecht: "männlich"
    }
)

MongoDB erzeugt zu diesem und jedem weiteren Eintrag au­to­ma­tisch eine für die jeweilige Coll­ec­tion ein­zig­ar­ti­ge ID.

Schritt 7: Dokumente verwalten

Im letzten Schritt unseres MongoDB-Tutorials geht es um die grund­le­gen­de Ver­wal­tung der an­ge­leg­ten Dokumente. Bevor Sie Ver­än­de­run­gen an den Do­ku­men­ten vornehmen können, müssen Sie diese zunächst aufrufen. Diese Abfrage gelingt mit dem find-Kommando und kann mit den op­tio­na­len Pa­ra­me­tern query filter (Ab­fra­ge­fil­ter) und pro­jec­tion (Spe­zi­fi­ka­ti­on des An­zei­ge­er­geb­nis­ses) prä­zi­siert werden. Um bei­spiels­wei­se das im vorigen Schritt erzeugte Dokument auf­zu­ru­fen, eignet sich der folgende Befehl:

db.meinecollection.find( { Name: "Name", Alter: 28 } )

Wollen Sie dieses Dokument nun ak­tua­li­sie­ren, benötigen Sie die update-Funktion. Hier de­fi­nie­ren Sie den zu ver­än­dern­den Wert, wählen einen Update-Operator und geben den ver­än­der­ten Wert an. Wollen Sie z. B. das Feld Alter im genannten Beispiel anpassen, benötigen Sie den Operator $set:

db.meinecollection.update(
{ Alter: 28 },
{
    $set: { Alter: 30 }
}
)

Die weiteren update-Ope­ra­to­ren finden Sie hier.

Um die Dokumente einer Coll­ec­tion zu löschen, nutzen Sie das remove-Kommando:

db.meinecollection.remove ()

Ebenso gut können Sie einzelne Dokumente der Sammlung entfernen, indem Sie Kriterien wie die ID oder genaue Werte de­fi­nie­ren und MongoDB damit si­gna­li­sie­ren, um welche Da­ten­bank­ein­trä­ge es sich handelt. Je spe­zi­fi­scher Sie dabei sind, desto exakter kann das Da­ten­bank­sys­tem beim Lö­schungs­pro­zess agieren. Der Befehl

db.meinecollection.remove ( { Alter: 28 } )

löscht zum Beispiel alle Einträge, die den Wert 28 für das Feld „Alter“ besitzen. Sie können auch angeben, dass einzig der erste Eintrag, auf den diese Ei­gen­schaft zutrifft, entfernt werden soll, indem Sie den so­ge­nann­ten justOne-Parameter (1) einfügen:

db.meinecollection.remove ( { Alter: 28 }, 1 )

Weitere In­for­ma­tio­nen wie bei­spiels­wei­se über die Nut­zer­ad­mi­nis­tra­ti­on, Si­cher­heits­ein­stel­lun­gen, die Er­stel­lung von Replica oder die Ver­tei­lung der Daten auf mehrere Systeme erhalten Sie in der of­fi­zi­el­len Do­ku­men­ta­ti­on auf mongodb.com sowie im MongoDB-Tutorial auf tu­to­ri­al­s­point.com.

Zum Hauptmenü