So fragen Sie eine MongoDB-Datenbank mit PyMongo in Python ab?

Teilen auf Facebook
Teilen auf twittern
Teilen auf verlinktin
Teilen auf Telegramm
Teilen auf WhatsApp

Inhalt

Überblick

  • Wir werden besprechen, wie Sie eine MongoDB-Datenbank mit der PyMongo-Bibliothek abfragen können.
  • Wir werden die grundlegenden Aggregationsoperationen in MongoDB behandeln.

Einführung

Nach der weltweiten Expansion des Internets, wir generieren jetzt Daten mit einer noch nie dagewesenen Geschwindigkeit. Weil die Durchführung jeder Art von Analyse von uns erfordern würde, / Lassen Sie uns die notwendigen Daten aus der Datenbank konsultieren, Es ist äußerst wichtig, dass wir das richtige Tool wählen, um die Daten abzufragen. Folglich, Wir können uns nicht vorstellen, SQL zu verwenden, um mit dieser Datenmenge zu arbeiten, da jede beratung teuer wird.

query-mongodb-using-pymongo-9814919

Abfragen einer MongoDB-Datenbank mit PyMongo

Genau hier kommt MongoDB ins Spiel. MongoDB ist eine unstrukturierte Datenbank, die Daten in Form von Dokumenten speichert. Was ist mehr, MongoDB kann große Datenmengen sehr effizient verarbeiten und ist die am weitesten verbreitete NoSQL-Datenbank, da es eine reichhaltige Abfragesprache und einen schnellen und flexiblen Zugriff auf Daten bietet.

In diesem Artikel, Wir werden mehrere Beispiele sehen, wie man eine MongoDB-Datenbank mit PyMongo abfragt. Was ist mehr, wir werden sehen, wie man Vergleichsoperatoren und logische Operatoren verwendet, Grundlagen zu regulären Ausdrücken und Aggregationspipelines.

Dieser Artikel ist eine Fortsetzung des MongoDB in Python Tutorial für Anfänger, wo wir die Herausforderungen unstrukturierter Datenbanken abdecken, Installationsschritte und grundlegende MongoDB-Operationen. Dann, wenn Sie ein kompletter Anfänger bei MongoDB sind, Ich würde dir empfehlen, diesen Artikel zuerst zu lesen.

Inhaltsverzeichnis

  1. Was ist PyMongo?
  2. Installationsschritte
  3. Fügen Sie die Daten in die Datenbank ein
  4. Konsultieren Sie die Datenbank
    1. Feldbasierter Filter
    2. Nach Vergleichsoperatoren filtern
    3. Nach logischen Operatoren filtern
    4. Reguläre Ausdrücke
    5. Aggregationsrohre
  5. Abschließende Anmerkungen

Was ist PyMongo?

PyMongo ist eine Python-Bibliothek, mit der wir uns mit MongoDB verbinden können. Was ist mehr, Dies ist die am meisten empfohlene Methode, um mit MongoDB und Python zu arbeiten.

Was ist mehr, Wir haben Python ausgewählt, um mit MongoDB zu interagieren, da es eine der am weitesten verbreiteten und wesentlich leistungsfähigeren Sprachen für ist Datenwissenschaft. PyMongo ermöglicht es uns, die Daten mit einer Syntax abzurufen, die der eines Wörterbuchs ähnelt.

Falls Sie ein Anfänger in Python sind, Ich empfehle Ihnen, sich für diesen kostenlosen Kurs anzumelden: Einführung in Python.

Installationsschritte

Die Installation von PyMongo ist einfach und unkompliziert. Hier, ich schätze du hast schon python 3 und MongoDB installiert. Der folgende Befehl hilft Ihnen bei der Installation von PyMongo:

pip3 installiere pymongo

Fügen Sie die Daten in die Datenbank ein

Lassen Sie uns nun die Dinge einrichten, bevor wir eine MongoDB-Datenbank mit PyMongo abfragen. Zuerst werden wir die Daten in die Datenbank einfügen. Die folgenden Schritte helfen Ihnen dabei:

  1. Importieren Sie die Bibliotheken und verbinden Sie sich mit dem Mongo-Client

    Starten Sie den MongoDB-Server auf Ihrem Computer. Ich gehe davon aus, dass eine Datei auf localhost ausgeführt wird: 27017.

    Beginnen wir mit dem Importieren einiger der Bibliotheken, die wir verwenden werden. Standardmäßig, MongoDB-Server läuft auf Port 27017 von der lokalen Maschine. Später, Wir verbinden uns mit dem MongoDB-Client mit dem Pymongo Bücherei.

    Später, db-Instanz von sample_db db abrufen. Falls es keine gibt, MongoDB erstellt eine für Sie.

  2. Erstellen Sie die Sammlungen aus den JSON-Dateien

    Wir werden Daten von einem Lebensmittellieferdienst verwenden, der in mehreren Städten tätig ist. Was ist mehr, Sie haben in diesen Städten mehrere Logistikzentren, um Lebensmittelbestellungen an ihre Kunden zu senden. Sie können die herunterladen Daten und Code hier.

    1. wöchentliche_nachfrage:
      • ICH WÜRDE: eindeutige ID für jedes Dokument
      • Woche: Wochennummer
      • center_id: Eindeutige ID für das Fulfillment Center
      • food_id: eindeutige Lebensmittel-ID
      • checkout_price: Endpreis mit Rabatt, Steuern und Versandkosten
      • Grundpreis: Grundpreis der Mahlzeit
      • emailer_for_promotion: E-Mail-Versand für Lebensmittelwerbung
      • homepage_featured: Auf der Homepage vorgestellte Speisen.
      • Anzahl_Bestellungen: (Bestimmung) Anzahl der Bestellungen
    2. food_info:
      • food_id: Eindeutige ID für Lebensmittel
      • Kategorie: Art der Nahrung (Getränke / Snacks / Suppen….)
      • Küche: Essensküche (Indien / Italienisch /…)

    Dann erstellen wir zwei Sammlungen in der Datenbank sample_db:

    screenshot-from-2020-08-18-01-34-57-4989570

    screenshot-from-2020-08-18-01-35-10-4366550

  3. Daten in Sammlungen einfügen

    Jetzt, Die Daten, die wir haben, sind im JSON-Format. Dann bekommen wir die Sammelinstanz, Wir werden die Datendatei lesen und die Daten mit dem einfügen insert_many Funktion.

Schließlich, haben 456548 Dokumente in der wöchentlichen Bedarfserfassung und 51 Dokumente in der Lebensmittelinformationssammlung. Jetzt, Werfen wir einen Blick auf ein Dokument aus jeder dieser Sammlungen.

wöchentliche_sammlung

screenshot-from-2020-08-18-01-36-57-9527843

mahlzeit_info_sammlung

screenshot-from-2020-08-18-01-37-17-5694111

Jetzt, unsere Daten sind fertig. Lassen Sie uns diese Datenbank konsultieren.

Konsultieren Sie die Datenbank

Wir können eine MongoDB-Datenbank mit PyMonfo mit dem finden -Funktion, um alle Ergebnisse zu erhalten, die die gegebene Bedingung erfüllen, und auch unter Verwendung der einen finden Funktion, die nur ein Ergebnis zurückgibt, das die Bedingung erfüllt.

Das Folgende ist die Syntax von find und find_one:

deine_sammlung.find( {<< Anfrage >>} , { << Felder>>} )

Sie können die Datenbank mit den folgenden Filtertechniken abfragen:

  1. Feldbasierter Filter

    Zum Beispiel, Sie haben Hunderte von Feldern und möchten nur einige davon sehen. Sie können dies tun, indem Sie einfach alle erforderlichen Feldnamen mit dem Wert 1. Zum Beispiel:

    screenshot-from-2020-08-18-01-38-49-4552120

    Zweitens, wenn Sie nur einige Felder aus dem gesamten Dokument verwerfen möchten, Sie können die Feldnamen gleich setzen 0. Deswegen, nur diese Felder werden ausgeschlossen. Beachten Sie, dass Sie keine Kombination aus 1 Ja 0 um die Felder zu bekommen. Entweder müssen alle eins sein oder alle müssen null sein.

    screenshot-from-2020-08-18-01-39-38-7933201

  2. Mit einer Bedingung filtern

    Jetzt, in diesem Abschnitt, Wir werden eine Bedingung in den ersten geschweiften Klammern und Feldern angeben, die in der zweiten verworfen werden soll. Folglich, gibt das erste Dokument mit center_id gleich zurück 55 und mahlzeit_id ist gleich 1885 Außerdem werden die Felder _id und week verworfen.

    screenshot-from-2020-08-18-01-40-27-4463234

  3. Nach Vergleichsoperatoren filtern

    Im Folgenden sind die neun Vergleichsoperatoren in MongoDB aufgeführt.

    NAME BEZEICHNUNG
    $eq Wird mit Werten übereinstimmen, die einem angegebenen Wert entsprechen.
    $gt Wird mit Werten übereinstimmen, die größer als ein bestimmter Wert sind.
    $gte Entspricht allen Werten, die größer oder gleich einem angegebenen Wert sind.
    $in Entspricht einem der angegebenen Werte in einem Array.
    $lt Wird mit allen Werten übereinstimmen, die kleiner als ein bestimmter Wert sind.
    $lte Entspricht allen Werten, die kleiner oder gleich einem angegebenen Wert sind.
    $ne Wird mit allen Werten übereinstimmen, die nicht einem angegebenen Wert entsprechen.
    $nin Entspricht keinem der angegebenen Werte in einem Array.

    Im Folgenden finden Sie einige Beispiele für die Verwendung dieser Vergleichsoperatoren:

    1. Gleich wie und nicht gleich

      Wir finden alle Dokumente, bei denen center_id gleich ist 55 und homepage_featured ist nicht gleich 0. So verwenden wir die Suchfunktion, gibt den Cursor für diesen Befehl zurück. Was ist mehr, Verwenden Sie eine for-Schleife, um die Abfrageergebnisse zu durchlaufen.

      screenshot-from-2020-08-18-01-41-19-9573970

    2. Auf der Liste und nicht auf der Liste

      Zum Beispiel, muss ein Element mit mehreren Elementen übereinstimmen. Dann, anstatt den Operator zu verwenden $ eq mehrmals, Wir können den Operator verwenden $ In. Wir werden versuchen, alle Dokumente zu finden, in denen center_id ist 24 du 11.

      screenshot-from-2020-08-18-01-43-39-2455630

      Später, wir suchen nach allen Dokumenten, bei denen center_id nicht in der angegebenen Liste vorhanden ist. Die folgende Abfrage gibt alle Dokumente zurück, bei denen center_id nicht ist 24 und weder 11.

      result_3-9662150

    3. Kleiner als und Größer als

      Jetzt, Lassen Sie uns alle Dokumente finden, in denen center_id ist 55 und checkout_price ist größer als 100 und weniger als 200. Verwenden Sie dazu die folgende Syntax-

      result_4-9980613

  4. Nach logischen Operatoren filtern

    NAME BEZEICHNUNG
    $and Verbindet die Abfrageklauseln mit einer Logik. AND und gibt alle Dokumente zurück, die beide Bedingungen erfüllen.
    $not Es wird die Auswirkung einer Abfrage umkehren und Dokumente zurückgeben, die nicht Nein Abfrageausdruck übereinstimmen.
    $nor Verbindet die Abfrageklauseln mit einer Logik. NOR und alle Dokumente zurückgeben, die nicht den Klauseln entsprechen.
    $or Verbindet die Abfrageklauseln mit einer Logik. OR und alle Dokumente zurückgeben, die den Bedingungen einer der Klauseln entsprechen.

    Die folgenden Beispiele veranschaulichen die Verwendung logischer Operatoren:

    1. Und Betreiber

      Die folgende Abfrage gibt alle Dokumente zurück, bei denen center_id gleich . ist 11 und auch mahlzeit_id ist nicht gleich 1778. Die Unterabfragen für die Ja Der Operator wird eine Liste eingeben.

      Ergebnis_5-2958763

    2. Betreiber OR

      Die folgende Abfrage gibt alle Dokumente zurück, bei denen center_id gleich . ist 11 o Mahlzeit_id es 1207 Ö 2707. Was ist mehr, die Unterabfragen für die Ö Der Operator wird eine Liste eingeben.

      result_6-1186208

  5. Mit regulären Ausdrücken filtern

    Reguläre Ausdrücke sind sehr nützlich, wenn Sie Textfelder haben und nach Dokumenten mit einem bestimmten Muster suchen möchten. Falls Sie mehr über reguläre Ausdrücke erfahren möchten, Ich empfehle Ihnen, diesen Artikel zu lesen: Anfänger-Tutorial für reguläre Ausdrücke in Python.

    Kann mit Operator verwendet werden. $ regex und wir können dem Operator einen Wert liefern, damit das Regex-Muster matc . ist. Wir verwenden für diese Abfrage die Sammlung "meal_info" und finden dann die Dokumente, in denen das Küchenfeld mit einem Zeichen beginnt C.

    result_7-9268219

    Nehmen wir ein weiteres Beispiel für reguläre Ausdrücke. Wir werden alle Dokumente entdecken, in denen die Kategorie mit dem Charakter beginnt. “S” und die Küche endet mit “Ian“.

    result_8-8426772

  6. Aggregationsrohre

    Die MongoDB Aggregation Pipeline bietet einen Rahmen für die Durchführung einer Reihe von Datentransformationen an einem Datensatz. Das Folgende ist seine Syntax:

    deine_sammlung.Aggregat( [ { <Stufe 1> }, { <Stufe 2> },.. ] )
    

    In der ersten Phase wird der gesamte Dokumentensatz als Eingabe verwendet und, von dort, jede nachfolgende Stufe nimmt die Ergebnismenge der vorherigen Transformation als Eingabe für die nächste Stufe und erzeugt die Ausgabe.

    Es gibt ungefähr 10 im MongoDB-Aggregat verfügbare Transformationen, von denen wir sehen werden $ Spiel Ja $ Gruppe In diesem Artikel. Wir werden jede der Transformationen im nächsten MongoDB-Artikel ausführlich besprechen.

    Zum Beispiel, In der ersten Stufe, Wir gleichen die Dokumente ab, bei denen center_id gleich ist 11 und in der nächsten stufe, zählt die Anzahl der Dokumente mit center_id gleich 11. Bitte beachten Sie, dass wir die $ zählen Operator gleicher Wert total_rows in der zweiten Stufe ist das der Name des Feldes, das wir in der Ausgabe haben wollen.

    result_9-9401019

    Jetzt, Nehmen wir ein anderes Beispiel, bei dem die erste Stufe dieselbe ist wie zuvor, nämlich, center_id gleich 11 und in der zweiten stufe, Wir möchten den Durchschnitt des Felds num_orders für die center_id berechnen 11 und die einzigen Mahlzeit_IDs für die center_id 11.

    result_10-1733037

Abschließende Anmerkungen

Die unergründliche Datenmenge, die heute anfällt, macht es notwendig, bessere Alternativen wie diese zu finden, um Daten abzufragen. Um zusammenzufassen, In diesem Artikel, wir haben gelernt, wie man mit PyMongo eine MongoDB-Datenbank abfragt. Was ist mehr, wir haben es verstanden, verschiedene Filter entsprechend der erforderlichen Situation anzuwenden.

Falls Sie weitere Informationen zur Datenabfrage wünschen, Ich empfehle folgenden Kurs: Strukturierte Abfragesprache (SQL) für Datenwissenschaft

Im nächsten Artikel, wir werden Aggregationspipelines im Detail analysieren.

Ich ermutige Sie, Dinge selbst auszuprobieren und Ihre Erfahrungen im Kommentarbereich zu teilen. Was ist mehr, wenn Sie ein Problem mit einem der oben genannten Konzepte haben, Fragt mich gerne unten in den Kommentaren.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.