Zum Inhalt springen

MongoDB-Daten finden

Wir lernen, wie wir Daten aus einer MongoDB-Datenbank mit Python und dem PyMongo-Treiber abrufen. Dieses Tutorial behandelt die Verbindung zu einem MongoDB-Server, das Abfragen einzelner und mehrerer Dokumente sowie das Filtern von Ergebnissen mit Vergleichs- und logischen Operatoren.

Einführung

Python wird häufig für die Datenverarbeitung und Backend-Entwicklung eingesetzt. MongoDB ist eine beliebte NoSQL-Datenbank, die sich nahtlos in Python integrieren lässt, um eine effiziente Datenspeicherung und -abfrage zu ermöglichen. Dieses Tutorial zeigt, wie Sie Daten mit dem PyMongo-Treiber aus MongoDB abfragen und abrufen können.

Voraussetzungen

Bevor wir uns detailliert mit dem Auffinden von Daten in MongoDB mit Python beschäftigen, sollten Sie über folgende Vorkenntnisse verfügen:

  • Grundkenntnisse in Python, einschließlich Datentypen, Schleifen und Funktionen.
  • Verständnis von MongoDB und dessen grundlegenden Operationen.
  • Das Paket pymongo ist installiert (pip install pymongo).

Verbindung mit MongoDB herstellen

Der erste Schritt beim Auffinden von Daten in MongoDB mit Python besteht darin, eine Verbindung zum MongoDB-Server herzustellen. MongoDB stellt einen Python-Treiber bereit, den Sie zur Verbindung mit der Datenbank verwenden können. So stellen Sie eine Verbindung her:

Verbindung mit MongoDB in Python herstellen

python
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

Im obigen Code haben wir das pymongo-Modul importiert und ein MongoClient-Objekt erstellt, um eine Verbindung zum auf dem lokalen Rechner laufenden MongoDB-Server herzustellen. Anschließend haben wir eine Datenbank namens „mydatabase" und eine Sammlung namens „customers" erstellt.

Befüllen der Sammlung

Bevor wir abfragen, fügen wir zunächst einige Beispiel-Dokumente ein, damit die Beispiele funktionieren:

python
mycol.insert_one({"name": "John", "age": 30})
mycol.insert_one({"name": "Jane", "age": 25})
mycol.insert_one({"name": "Doe", "age": 35})

Hinweis: PyMongo fügt jedem eingefügten Dokument automatisch ein eindeutiges _id-Feld hinzu, falls keines angegeben wurde.

Daten finden

Da wir nun eine Verbindung zum MongoDB-Server hergestellt haben, können wir Daten in der Datenbank mit verschiedenen Methoden des PyMongo-Treibers finden. Hier sind einige der am häufigsten verwendeten Methoden:

find_one()

Die Methode find_one() wird verwendet, um das erste Dokument abzurufen, das den Abfragekriterien entspricht. So verwenden Sie die find_one()-Methode:

Ein Dokument in MongoDB in Python finden

python
x = mycol.find_one()
print(x)

Dies ruft das erste Dokument in der Sammlung „customers" ab und gibt es in der Konsole aus.

find()

Die Methode find() wird verwendet, um alle Dokumente abzurufen, die den Abfragekriterien entsprechen. So verwenden Sie die find()-Methode:

Mehrere Dokumente in MongoDB in Python finden

python
for x in mycol.find():
  print(x)

Dies ruft alle Dokumente in der Sammlung „customers" ab und gibt sie in der Konsole aus.

Daten abfragen

Neben den oben genannten Methoden können wir Daten auch mit verschiedenen von MongoDB bereitgestellten Operatoren abfragen. Hier sind einige der am häufigsten verwendeten Operatoren:

  • Gleich: {"field": "value"}
  • Ungleich: {"field": {"$ne": "value"}}
  • Größer als: {"field": {"$gt": "value"}}
  • Größer oder gleich: {"field": {"$gte": "value"}}
  • Kleiner als: {"field": {"$lt": "value"}}
  • Kleiner oder gleich: {"field": {"$lte": "value"}}
  • In: {"field": {"$in": ["value1", "value2", "value3"]}}
  • Nicht in: {"field": {"$nin": ["value1", "value2", "value3"]}}
  • Und: {"field1": "value1", "field2": "value2"} (Bei einfachen Bedingungen wird implizites AND bevorzugt. Verwenden Sie $and nur für komplexe Bedingungen, z. B. wenn verschiedene Operatoren auf dasselbe Feld angewendet werden sollen.)
python
# Implicit AND (simple conditions)
myquery = {"age": {"$gt": 25}, "name": "John"}

# $and operator (complex conditions, e.g., same field)
myquery = {"$and": [{"age": {"$gt": 25}}, {"age": {"$lt": 35}}]}
  • Oder: {"$or": [{"field1": "value1"}, {"field2": "value2"}]}

Hier ist ein Beispiel, wie Sie den Operator „größer als" verwenden können, um alle Dokumente abzurufen, bei denen das Feld „age" größer als 25 ist:

Eine MongoDB-Sammlung in Python abfragen

python
myquery = {"age": {"$gt": 25}}

results = mycol.find(myquery)

for x in results:
  print(x)

Dies erstellt eine Abfrage für Dokumente, bei denen das Feld „age" größer als 25 ist, übergibt sie an find() und gibt die übereinstimmenden Ergebnisse aus.

Ergebnisse sortieren und begrenzen

Sie können Ergebnisse mit sort() sortieren und die Anzahl der zurückgegebenen Dokumente mit limit() begrenzen. Außerdem können Sie skip() verwenden, um Ergebnisse zu paginieren.

Sortieren und Begrenzen in MongoDB

python
# Sort by age in ascending order, limit to 2 results
results = mycol.find().sort("age", 1).limit(2)
for x in results:
  print(x)

Das zweite Argument in sort() ist 1 für aufsteigend und -1 für absteigend.

Überspringen und Begrenzen in MongoDB

python
# Skip the first 2 documents, then return the next 2
results = mycol.find().skip(2).limit(2)
for x in results:
  print(x)

Fazit

In diesem Artikel haben wir besprochen, wie Sie Daten in MongoDB mit Python finden. Wir begannen mit der Herstellung einer Verbindung zum MongoDB-Server, gefolgt vom Abrufen von Daten mit verschiedenen Methoden des PyMongo-Treibers. Außerdem haben wir erläutert, wie Sie Daten mit verschiedenen von MongoDB bereitgestellten Operatoren abfragen können. Wenn Sie den in diesem Artikel beschriebenen Schritten folgen, sollten Sie nun in der Lage sein, Daten in MongoDB effizient mit Python zu finden.

Wir hoffen, dass Sie diesen Artikel informativ und nützlich fanden. Wenn Sie Fragen oder Feedback haben, hinterlassen Sie gerne einen Kommentar unten. Vielen Dank fürs Lesen!

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.