Wie man PyMongo benutzt

Wie man PyMongo benutzt

  • Orchestrierung
6 Minuten Lesezeit Aktualisiert Dec 9, 2020

Auf einen Blick: Dieses Tutorial bietet einen umfassenden Leitfaden zur Nutzung von PyMongo, dem offiziellen Python-Treiber für MongoDB, der Installation, Verbindung und grundlegende CRUD-Operationen abdeckt.

  • Installiere PyMongo über pip und verbinde dich mit MongoDB.

  • Führen Sie CRUD-Operationen an Sammlungen und Dokumenten durch.

  • Greifen Sie auf zusätzliche Ressourcen für weiteres Lernen zu, einschließlich der Dokumentation.

In diesem Tutorial erkläre ich dir, wie du PyMongo in MongoDB benutzt.

Was ist PyMongo?

PyMongo ist der offizielle Python-Treiber , der sich mit MongoDB-Datenbanken verbindet und mit ihnen interagiert. Die PyMongo-Bibliothek wird vom MongoDB-Team aktiv weiterentwickelt.

Installation von PyMongo

PyMongo kann problemlos per Pip auf jeder Plattform installiert werden.

Wie man PyMongo verwendet

    pip install pymongo

Du kannst die PyMongo-Installation per pip überprüfen oder versuchen, das Modul in eine Python-Datei zu importieren.

Überprüfung per Pip:

    pip list --local

Lassen Sie uns eine einfache Python-Datei erstellen, in der wir das PyMongo-Modul importieren. Die Import-Anweisung wird in eine try-exessied-Anweisung eingewickelt, um eine Nachricht an die Ausgabe zu schreiben, basierend auf dem Erfolg oder Misserfolg der Import-Anweisung.

    try:
import pymongo
print("Module Import Successful")
except ImportError as error:
print("Module Import Error")
print(error)

In diesem Abschnitt behandeln wir die grundlegende Nutzung des PyMongo-Moduls und wie es zur Interaktion mit einer MongoDB-Installation verwendet werden kann. Die in diesem Artikel verwendeten Serverdetails von MongoDB sind:

  • IP: 10.10.10.59
  • Port: 27017

/etc/mongod.conf

    # network interfaces
net:
port: 27017
bindIp: 127.0.0.1, 10.10.10.59

Um Zugriff auf die Datenbank zu ermöglichen, musst du die externe IP des Servers zum bindIP-Parameter hinzufügen. Du findest sie im Netzwerkbereich der Datei "mongod.conf".

Hier sind die Aktionen, die ich dir zeigen werde:

Verbindung zur MongoDB-Installation

Es gibt zwei Möglichkeiten, die Verbindungskette zu definieren:

  • Verwendung von IP und Port
  • Verwendung einer MongoURL

Ergebnis:

    from pymongo import MongoClient
client = MongoClient('10.10.10.59', 27017)
# Alternative Connection Method - MongoURL Format
# client = MongoClient('mongodb://10.10.10.59:27017')
print(client.server_info())

Ergebnis:

In diesem Beispiel haben wir die Verbindung hergestellt, indem wir eine neue Instanz der MongoClient-Klasse mit der MongoDB-Server-IP und dem Port erstellt haben. Dann rufen wir die Funktion server_info() auf, um die Daten über die MongoDB-Serverinstanz zu erhalten.

Im nächsten Beispiel rufen wir die Funktion list_database_names() auf, um eine Liste aller Datenbanken zu erhalten.

Ergebnis:

    from pymongo import MongoClient
client = MongoClient('10.10.10.59', 27017)
print(client.list_database_names())

Ergebnis:

Sammlungen aus einer Datenbank abholen

Mit der list_collection_names-Methode können wir eine Liste von Sammlungen aus einem bestimmten Datenbankobjekt erhalten. Das include_system_collection wird auf False gesetzt, um alle vom System selbst erstellten Sammlungen auszuschließen.

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
# Select the Database
database = client.students
# Alternative Declaration Method
# database = client['students']
# Get List of Collections
collection = database.list_collection_names(include_system_collections=False)
print(collection)

Ergebnis:

Dokumente in einer Sammlung finden

Du kannst die find()- Methode verwenden, um nach jedem Dokument in einer Sammlung zu suchen. Lass uns ein Beispiel machen, um es besser zu verstehen.

Ergebnis:

Die find()-Methode

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
# Select the Database
database = client.students
# Get Details of the specified Collection
collection = database['student_grades']
# Print each Document
for studentinfo in collection.find():
print(studentinfo)

Ergebnis:

Du kannst mehrere andere MongoDB-Operatoren wie Projektion, Push und Pull sowie Sortieren innerhalb der find()-Methode verwenden, um die Ausgabe zu filtern.

In unserem nächsten Beispiel verwenden wir den MongoDB-Projektionsoperator, um das "_id"-Feld herauszufiltern und den resultierenden Datensatz in absteigender Reihenfolge zu sortieren.

Ergebnis:

    from pymongo import MongoClient

# Create Connection
client = MongoClient('10.10.10.59', 27017)
# Select the Database
database = client.students
# Get Details of the specified Collection
collection = database['student_grades']
# Print each Document
for studentinfo in collection.find({},{'_id':0}).sort('name',-1):
print(studentinfo)

Ergebnis:

Ein Dokument aus einer Sammlung finden

PyMongo bietet die find_one()- und find()-Methoden, um ein einzelnes Dokument aus einer Sammlung zu finden:

  • Die find_one()-Methode liefert das erste Dokument gemäß den gegebenen Bedingungen zurück.
  • Die find()-Methode gibt ein Cursor-Objekt zurück, ein iterables Objekt, das zusätzliche Hilfsmethoden zur Transformation der Daten enthält.

Die find_one()-Methode

Ergebnis:

Die find_one()-Methode

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
# Select the Database
database = client.students
# Get Details of the specified Collection
collection = database['student_grades']
studentinfo = collection.find_one({'name':'Mike'})
print(studentinfo)

Ergebnis:

Die find()-Methode

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
# Select the Database
database = client.students
# Get Details of the specified Collection
collection = database['student_grades']
studentinfo = collection.find({'name':'Mike'})
print(studentinfo)

Ergebnis:

Um eine lesbare Ausgabe zu erhalten, können wir eine Schleife verwenden, um das Objekt zu iterieren.

Ergebnis:

    from pymongo import MongoClient

# Create Connection
client = MongoClient('10.10.10.59', 27017)
# Select the Database
database = client.students
# Get Details of the specified Collection
collection = database['student_grades']
studentinfo = collection.find({'name':'Mike'})
# print(studentinfo)
# Print each Document
for student in studentinfo:
print(student)

Ergebnis:

Erstellung einer Datenbank, Sammlung und eines Dokuments

In diesem Abschnitt betrachten wir, wie man eine Datenbank und eine Sammlung erstellt und wie man Dokumente in die neue Sammlung einfügt. MongoDB erstellt erst eine Datenbank, wenn mindestens ein Dokument in der Datenbank vorhanden ist.

Das folgende Beispiel zeigt, wie man eine Datenbank namens "food" mit einer "Dessert"-Sammlung und einem einzigen Dokument mit der insert_one() -Methode erstellt. PyMongo erstellt automatisch eine neue Datenbank, wenn die ausgewählte Datenbank nicht verfügbar ist.

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
print(f"Existing Databases")
print(client.list_database_names())
# Create a New Database - dictionary style
database_foods = client['foods']
# Alternative method for simple strings #
# database = client.foods
# Create a Collection - dictionary style
col_desserts = database_foods['desserts']
# Insert a Single Document
document = {'name': 'chocolate cake', 'price': 20, 'ingredients':['chocolate', 'flour', 'eggs']}
col_desserts.insert_one(document)
print(f"\nVerify the New Database")
print(client.list_database_names())
print(f"\nCollections in the Database foods")
print(database_foods.list_collection_names())
print(f"\nDocuments in the desserts Collection")
dessert = col_desserts.find()
# Print each Document
for des in dessert:
print(des)

Ergebnis:

Dokumente in eine Sammlung einfügen

PyMongo bietet zwei Methoden zum Einfügen von Dokumenten als insert_one() und insert_many():

  • Insert_one() wird verwendet, um ein einzelnes Dokument einzufügen
  • Insert_many() fügt mehrere Dokumente ein.

Schauen wir uns ein paar Beispiele dafür mit der "Desserts"-Kollektion an.

Einfügen eines einzelnen Dokuments

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
database_foods = client['foods']
col_desserts = database_foods['desserts']
print(f"\nAll Documents in the desserts Collection")
dessert = col_desserts.find()
# Print each Document
for des in dessert:
print(des)
# Insert a Single Document
document = {'name': 'ice cream', 'price': 10, 'ingredients':['milk', 'vanilla extract', 'eggs', 'heavy cream', 'sugar']}
col_desserts.insert_one(document)
print(f"\nAfter Insert")
dessert = col_desserts.find()
# Print each Document
for des in dessert:
print(des)

Ergebnis:

Mehrere Dokumente einfügen

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
database_foods = client['foods']
col_desserts = database_foods['desserts']
documents = [
{'name': 'pumpkin pie', 'price': 15, 'ingredients':['pumpkin', 'condensed milk', 'eggs', 'cinnamon']},
{'name': 'chocolate chip cookies', 'price': 3, 'ingredients':['chocolate chips', 'butter', 'white sugar', 'flour', 'vanilla extract']},
{'name': 'banana pudding', 'price': 10, 'ingredients':['banana', 'white sugar', 'milk', 'flour', 'salt']}
]
col_desserts.insert_many(documents)
dessert = col_desserts.find({},{'_id':0})
# Print each Document
for des in dessert:
print(des)

Ergebnis:

Aktualisierung von Dokumenten

Die Methoden update_one() und update_many() werden verwendet, um ein einzelnes Dokument oder mehrere Dokumente zu aktualisieren. Die folgenden Beispiele zeigen, wie jede dieser Methoden verwendet werden kann.

Aktualisierung eines einzelnen Dokuments

In diesem Beispiel aktualisieren wir das "price"-Feld eines Dokuments, das durch das "_id"-Feld angegeben ist. Dafür müssen Sie die ObjectId-Klasse aus dem "bson"-Modul importieren.

In diesem Beispiel haben wir den Preis eines Schokoladenkekses auf 5 aktualisiert.

Ergebnis:

    from pymongo import MongoClient
from bson.objectid import ObjectId
# Create Connection
client = MongoClient('10.10.10.59', 27017)
database_foods = client['foods']
col_desserts = database_foods['desserts']
document = {'_id': ObjectId('5fc5ebe4abb99571485ce8f0')}
updated_values = {'$set': {'price': 5}}
# Update the Document
col_desserts.update_one(document, updated_values)
# Find the Updated Document
updated_doc = col_desserts.find_one({'_id': ObjectId('5fc5ebe4abb99571485ce8f0')})
print(updated_doc)

Ergebnis:

Aktualisierung mehrerer Dokumente

In diesem Beispiel finden wir alle Dokumente, deren "Name" mit der Zeichenkette "chocolate" beginnt, mithilfe des $regex-Operators. Dann erhöhen wir ihren Preis um 5 mit dem $inc-Operator .

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
database_foods = client['foods']
col_desserts = database_foods['desserts']
# Find Documents that starts with chocolate
document = {"name": { "$regex": "^chocolate"}}
# Increase the existing value by five
updated_values = {'$inc': {'price': 5}}
# Update the Documents
col_desserts.update_many(document, updated_values)
# Find the Updated Documents
for des in col_desserts.find({},{'_id':0}):
print(des)

Ergebnis:

Löschen von Dokumenten, Sammlungen und Datenbanken

Schauen wir uns an, wie "Löschen" in PyMongo funktioniert:

  • Die delete_one()- Methode löscht ein einzelnes Dokument.
  • Die delete_many()- Methode löscht mehrere Dateien.
  • Die drop()- Methode löscht Sammlungen.
  • Die drop_database()- Methode löscht eine Datenbank.

Schauen wir uns ein Beispiel für jeden Anwendungsfall an.

Löschen eines einzelnen Dokuments

Wir löschen ein Dokument, indem wir das Feld "_id" als Identifikator verwenden.

Ergebnis:

    from pymongo import MongoClient
from bson.objectid import ObjectId
# Create Connection
client = MongoClient('10.10.10.59', 27017)
database_foods = client['foods']
col_desserts = database_foods['desserts']
document = {'_id': ObjectId('5fc5ebe4abb99571485ce8f0')}
# Delete the Document
col_desserts.delete_one(document)
# Find the Remaining Documents
for des in col_desserts.find():
print(des)

Ergebnis:

Löschen mehrerer Dokumente

Wir werden alle Dokumente löschen, bei denen der Preis gleich oder weniger als 10 ist, aus der "Desserts"-Sammlung.

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
database_foods = client['foods']
col_desserts = database_foods['desserts']
# Select only documents where price is less than or equal to 10
document = {'price': { '$lte': 10 }}
# Delete the Document
col_desserts.delete_many(document)
# Find the Remaining Documents
for des in col_desserts.find():
print(des)

Ergebnis:

Löschen einer Sammlung

Eine MongoDB-Sammlung kann mit der drop()-Methode gelöscht werden. So können Sie die vollständige "Desserts"-Sammlung aus unserer Lebensmitteldatenbank entfernen.

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
database_foods = client['foods']
# Check currently available collections
print(database_foods.list_collection_names())
# Delete the collection
col_desserts = database_foods['desserts']
col_desserts.drop()
# Print the remaining collections
print(database_foods.list_collection_names())

Ergebnis:

Die zweite Druckanweisung ist leer, da wir die einzige Sammlung aus der "Foods"-Datenbank gelöscht haben.

Löschen der Datenbank

Das untenstehende Beispiel zeigt Ihnen, wie man eine vollständige Datenbank mit all ihren Sammlungen und Dokumenten löscht. Wir löschen die "Studenten" mit der drop_database()-Methode.

Ergebnis:

    from pymongo import MongoClient
# Create Connection
client = MongoClient('10.10.10.59', 27017)
# List all databases
print(client.list_database_names())
# Check for Data within the database
database_students = client['students']
print('')
print(database_students.list_collection_names())
# Delete the complete database
client.drop_database('students')
# Verify the Deletion
print('')
print(client.list_database_names())

Ergebnis:

Wie Sie sehen, ist die "Studenten"-Datenbank komplett entfernt.

Das war's für dieses Tutorial. Wenn du mehr über PyMongo erfahren möchtest, ist die beste Quelle ihre Dokumentation.

Verwandte Literatur

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Orchestrierung

Abonnieren Sie The Brief

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Danke

Sie haben The Brief abonniert
Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.