MongoDB Find: Dokumente in Sammlungen finden

Mit den MongoDB-Befehlen Find und Find One lokalisieren Sie alle oder einige Dokumente, die bestimmten Suchparametern entsprechen. Die Befehle lassen sich auch mit Python oder Node.js verwenden.

Was ist der MongoDB-Find-Befehl und wozu dient er?

Wenn Sie sich bereits ein wenig mit MongoDB beschäftigt haben, wissen Sie bereits, dass das Datenbankmanagementsystem ein wenig anders funktioniert als klassische relationale Datenbanken wie z. B. MySQL. MongoDB erstellt zwar auch Datenbanken, speichert die Daten allerdings nicht in Tabellen, sondern in Dokumenten, die wiederum in sogenannten Collections oder Sammlungen zusammengefasst werden. Hierbei stellt sich die Frage, wie sich die entsprechenden Daten durchsuchen und anzeigen lassen. Das System kennt hierfür zwei grundsätzliche MongoDB Commands: Find und Find One. Diese erstellen einen Cursor zu allen oder bestimmten Dokumenten, die Ihren definierten Suchparametern entsprechen.

Die Syntax des Find-Befehls

Um den Find-Befehl und seine Funktionsweise zu verstehen, sollten Sie zunächst einen Blick auf die grundsätzliche Syntax werfen, die folgendermaßen aussieht:

db.collection.find
(
<query>,</query>
<projection></projection>
)

Neben dem eigentlichen Befehl enthält Find somit noch zwei Parameter, die in der Klammer dahinter vermerkt sind. <query> ist ein Filter-Parameter, mit dem die Suche spezifiziert werden kann. Der zweite Parameter <projection> ist optional und legt fest, welche Aspekte jedes passenden Dokuments ausgegeben werden sollen.

Beispiel für den Find-Befehl

Stellen Sie sich als Beispiel eine Liste für Kundinnen und Kunden aus Deutschland vor, die Sie nun mit dem MongoDB-Find-Befehl durchsuchen möchten. Diese befindet sich als Sammlung in der Datenbank „kunden“. Wenn Sie eine grundsätzliche Übersicht über alle Dokumente erhalten wollen, nutzen Sie den Find-Befehl, verzichten auf <projection> und lassen auch den Parameter <query> leer. In Code-Form sieht das folgendermaßen aus:

>use kunden
switched to db kunden
>db.liste_deutschland.find();
>

Als Ergebnis erhalten Sie nun die gesamte Liste der Kundinnen und Kunden aus Deutschland, inklusive sämtlicher Informationen, die Sie hinterlegt haben. Vorangestellt wird den Dokumenten dabei immer ihre einzigartige _id-Nummer, durch die das System jedes Dokument exakt identifizieren kann.

Beispiel für den Find-Befehl mit Parametern

Zwar kann die Ausgabe sämtlicher Dokumente mithilfe des Find-Befehls durchaus nützlich sein, besonders interessant wird es allerdings, wenn Sie nur ganz bestimmte Dokumente filtern möchten. Dabei helfen Ihnen die erwähnten Parameter. Stellen Sie sich dafür vor, dass folgende Informationen zu jeder Kundin und jedem Kunden hinterlegt sind und sich bei Bedarf ausspielen lassen:

"_id": ObjectID,
"name": "Mustermann"
"adress": "Beispielweg 17"
"city": "Hamburg"

Möchten Sie nun aus Ihrer Datenbank mit mehreren Hundert Kundinnen und Kunden aus verschiedenen Städten beispielsweise jene filtern, die aus Berlin kommen, gehen Sie folgendermaßen vor:

Db.liste_deutschland.find({"city": "Berlin"})

Das System filtert nun sämtliche Einträge in der Sammlung „liste_deutschland“, zeigt Ihnen aber nur Ergebnisse an, die als Stadt Berlin hinterlegt haben.

Beispiel für den Find-One-Befehl

Neben der generellen Find-Option, mit der Sie sich alle oder nur bestimmte Dokumente anzeigen lassen, bietet das System auch die zusätzliche MongoDB-Funktion Find One. Diese Methode zeigt Ihnen genau ein Dokument an, das den definierten Kriterien entspricht. Ausgewählt wird dabei das erste Dokument, das in der Auflistung auftaucht. Entspricht kein Dokument den Suchkriterien, dann wird „Null“ ausgegeben. Die Syntax von Find One ähnelt der von Find:

db.collection.findOne
(
<query>,</query>
<projection></projection>
)

Auch hier werden durch <query> Suchkriterien definiert, und das optionale <projection> gibt an, welche Felder des Treffers ausgespielt werden. Wenn Sie den Befehl Find One dementsprechend für das oben genannte Beispiel anwenden, sieht das folgendermaßen aus:

>use kunden
switched to db kunden
>db.liste_deutschland.findOne();
>

Als Ausgabe erhalten Sie im Anschluss den ersten Eintrag auf Ihrer Kundenliste für Deutschland.

Tipp: Managed MongoDB von IONOS

Mit Managed MongoDB von IONOS können Sie sich auf das Wesentliche konzentrieren. Ob Installation, Betrieb oder Wartungsarbeiten, IONOS sorgt für einen zuverlässigen Betrieb Ihrer hochperformanten Datenbanken.

Der MongoDB-Find-Befehl mit Node.js und Python

Sie können MongoDB auch mit Node.js oder Python verwenden. In diesem Fall sieht der Find-Befehl ein wenig anders aus, wobei die grundsätzliche Funktionalität erhalten bleibt.

Der Find-One-Befehl in Python

Ein beliebter MongoDB Driver für die Arbeit mit Python ist PyMongo. Verwenden Sie diesen Driver, sieht der Find-One-Befehl zum Beispiel so aus:

import pymongo
myclient = pymongo.MongoClient ("mongodb://localhost:24137/")
mydb = myclient ["kunden"]
mycol = mydb ["liste_deutschland"]
x = myco.find_one()
print ( x )

Der Find-One-Befehl mit Node.js

Auch die JavaScript-Laufzeitumgebung Node.js kann in MongoDB verwendet werden. Möchten Sie den Find-One-Befehl dort ausführen, sieht der Code folgendermaßen aus:

var MongoClient = require ('mongodb').MongoClient;
var url = "mongodb://localhost:24137/";
MongoClient.connect (url, function (err, db) {
if (err) throw err;
var dbo = db.db ("mydb");
dbo.collection ("liste_deutschland").findOne ( {}, function (err, result) {
if (err) throw err;
console-log (result.name);
db.close();
} );
} );
Tipp

Sie möchten in MongoDB Ihre Dokumente sortieren und sich dadurch eine bessere Übersicht verschaffen? Dann nutzen Sie den MongoDB-Befehl Sort, der dies für Sie in kürzester Zeit erledigt.