Mit den MongoDB-Befehlen Find und Find One lo­ka­li­sie­ren Sie alle oder einige Dokumente, die be­stimm­ten Such­pa­ra­me­tern ent­spre­chen. 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 be­schäf­tigt haben, wissen Sie bereits, dass das Da­ten­bank­ma­nage­ment­sys­tem ein wenig anders funk­tio­niert als klas­si­sche re­la­tio­na­le Da­ten­ban­ken wie z. B. MySQL. MongoDB erstellt zwar auch Da­ten­ban­ken, speichert die Daten al­ler­dings nicht in Tabellen, sondern in Do­ku­men­ten, die wiederum in so­ge­nann­ten Coll­ec­tions oder Samm­lun­gen zu­sam­men­ge­fasst werden. Hierbei stellt sich die Frage, wie sich die ent­spre­chen­den Daten durch­su­chen und anzeigen lassen. Das System kennt hierfür zwei grund­sätz­li­che MongoDB Commands: Find und Find One. Diese erstellen einen Cursor zu allen oder be­stimm­ten Do­ku­men­ten, die Ihren de­fi­nier­ten Such­pa­ra­me­tern ent­spre­chen.

Die Syntax des Find-Befehls

Um den Find-Befehl und seine Funk­ti­ons­wei­se zu verstehen, sollten Sie zunächst einen Blick auf die grund­sätz­li­che Syntax werfen, die fol­gen­der­ma­ßen aussieht:

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

Neben dem ei­gent­li­chen Befehl enthält Find somit noch zwei Parameter, die in der Klammer dahinter vermerkt sind. <query> ist ein Filter-Parameter, mit dem die Suche spe­zi­fi­ziert werden kann. Der zweite Parameter <pro­jec­tion> ist optional und legt fest, welche Aspekte jedes passenden Dokuments aus­ge­ge­ben werden sollen.

Beispiel für den Find-Befehl

Stellen Sie sich als Beispiel eine Liste für Kundinnen und Kunden aus Deutsch­land vor, die Sie nun mit dem MongoDB-Find-Befehl durch­su­chen möchten. Diese befindet sich als Sammlung in der Datenbank „kunden“. Wenn Sie eine grund­sätz­li­che Übersicht über alle Dokumente erhalten wollen, nutzen Sie den Find-Befehl, ver­zich­ten auf <pro­jec­tion> und lassen auch den Parameter <query> leer. In Code-Form sieht das fol­gen­der­ma­ß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 Deutsch­land, inklusive sämt­li­cher In­for­ma­tio­nen, die Sie hin­ter­legt haben. Vor­an­ge­stellt wird den Do­ku­men­ten dabei immer ihre ein­zig­ar­ti­ge _id-Nummer, durch die das System jedes Dokument exakt iden­ti­fi­zie­ren kann.

Beispiel für den Find-Befehl mit Pa­ra­me­tern

Zwar kann die Ausgabe sämt­li­cher Dokumente mithilfe des Find-Befehls durchaus nützlich sein, besonders in­ter­es­sant wird es al­ler­dings, wenn Sie nur ganz bestimmte Dokumente filtern möchten. Dabei helfen Ihnen die erwähnten Parameter. Stellen Sie sich dafür vor, dass folgende In­for­ma­tio­nen zu jeder Kundin und jedem Kunden hin­ter­legt sind und sich bei Bedarf aus­spie­len lassen:

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

Möchten Sie nun aus Ihrer Datenbank mit mehreren Hundert Kundinnen und Kunden aus ver­schie­de­nen Städten bei­spiels­wei­se jene filtern, die aus Berlin kommen, gehen Sie fol­gen­der­ma­ßen vor:

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

Das System filtert nun sämtliche Einträge in der Sammlung „liste_deutsch­land“, zeigt Ihnen aber nur Er­geb­nis­se an, die als Stadt Berlin hin­ter­legt haben.

Beispiel für den Find-One-Befehl

Neben der ge­ne­rel­len Find-Option, mit der Sie sich alle oder nur bestimmte Dokumente anzeigen lassen, bietet das System auch die zu­sätz­li­che MongoDB-Funktion Find One. Diese Methode zeigt Ihnen genau ein Dokument an, das den de­fi­nier­ten Kriterien ent­spricht. Aus­ge­wählt wird dabei das erste Dokument, das in der Auf­lis­tung auftaucht. Ent­spricht kein Dokument den Such­kri­te­ri­en, dann wird „Null“ aus­ge­ge­ben. Die Syntax von Find One ähnelt der von Find:

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

Auch hier werden durch <query> Such­kri­te­ri­en definiert, und das optionale <pro­jec­tion> gibt an, welche Felder des Treffers aus­ge­spielt werden. Wenn Sie den Befehl Find One dem­entspre­chend für das oben genannte Beispiel anwenden, sieht das fol­gen­der­ma­ßen aus:

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

Als Ausgabe erhalten Sie im Anschluss den ersten Eintrag auf Ihrer Kun­den­lis­te für Deutsch­land.

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.

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 grund­sätz­li­che Funk­tio­na­li­tä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 Ja­va­Script-Lauf­zeit­um­ge­bung Node.js kann in MongoDB verwendet werden. Möchten Sie den Find-One-Befehl dort ausführen, sieht der Code fol­gen­der­ma­ß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 ver­schaf­fen? Dann nutzen Sie den MongoDB-Befehl Sort, der dies für Sie in kürzester Zeit erledigt.

Zum Hauptmenü