Σωληνώσεις συγκέντρωσης στη βάση δεδομένων MongoDB|  Χρήση PyMongo στην Python

Σωληνώσεις συγκέντρωσης στη βάση δεδομένων MongoDB| Χρήση PyMongo στην Python

Oktober 1, 2022 0 Von admin

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

  • Θα συζητήσουμε τους αγωγούς συγκέντρωσης στο MongoDB.
  • Θα δούμε πώς να χρησιμοποιήσουμε τον τελεστή όπως το match, το group, το bucket και το facet.

Εισαγωγή

Το MongoDB είναι μια μη δομημένη βάση δεδομένων που αποθηκεύει δεδομένα με τη μορφή εγγράφων. Επιπλέον, η MongoDB είναι σε θέση να χειρίζεται τεράστιους όγκους δεδομένων πολύ αποτελεσματικά και είναι η πιο ευρέως χρησιμοποιούμενη βάση δεδομένων NoSQL, καθώς προσφέρει πλούσια γλώσσα ερωτημάτων και ευέλικτη και γρήγορη πρόσβαση στα δεδομένα.

Αγωγοί συγκέντρωσης στο MongoDB

Σε αυτό το άρθρο, θα δούμε πολλά παραδείγματα για τον τρόπο δημιουργίας των αγωγών συγκέντρωσης σε μια βάση δεδομένων MongoDB χρησιμοποιώντας το PyMongo. Περαιτέρω, θα δούμε πώς να χρησιμοποιήσουμε τους τελεστές όπως το match για να φιλτράρουμε τα δεδομένα, έναν κάδο για να δημιουργήσουμε κάδους που ορίζονται από το χρήστη σε ένα πεδίο, μια όψη για τη δημιουργία πολλαπλών αγωγών σε ένα σύνολο εγγράφων.

Αυτό είναι το 3ο άρθρο της σειράς άρθρων MongoDB. Έχω παραθέσει τα 2 πρώτα άρθρα της σειράς παρακάτω-

  1. MongoDB in Python Tutorial για αρχάριους
  2. Πώς να κάνετε ερώτημα σε μια βάση δεδομένων MongoDB χρησιμοποιώντας το PyMongo;

Επομένως, εάν είστε εντελώς αρχάριος στο MongoDB, θα σας συνιστούσα να διαβάσετε πρώτα αυτό το άρθρο πριν ξεκινήσουμε.

Πίνακας περιεχομένων

  1. Τι είναι το PyMongo;
  2. Βήματα εγκατάστασης
  3. Εισαγάγετε τα δεδομένα στις βάσεις δεδομένων
  4. Τι είναι οι αγωγοί συγκέντρωσης;
    1. Αγώνας
    2. Ομάδα
    3. Κάδος
    4. Οψη
  5. Σημειώσεις τέλους

Τι είναι το PyMongo;

Το PyMongo είναι μια βιβλιοθήκη Python που μας δίνει τη δυνατότητα να συνδεθούμε με το MongoDB. Επιπλέον, αυτός είναι ο πιο συνιστώμενος τρόπος εργασίας με MongoDB και Python.

Επίσης, επιλέξαμε την Python για αλληλεπίδραση με το MongoDB επειδή είναι μια από τις πιο συχνά χρησιμοποιούμενες και πολύ ισχυρές γλώσσες για επιστημονικά δεδομένα. Το PyMongo μας επιτρέπει να ανακτούμε τα δεδομένα με σύνταξη που μοιάζει με λεξικό.

Σε περίπτωση που είστε αρχάριος στην Python, θα σας προτείνω να εγγραφείτε σε αυτό το δωρεάν μάθημα: Εισαγωγή στην Python

Τώρα ας δούμε πώς να δημιουργήσουμε σωλήνες συγκέντρωσης σε μια βάση δεδομένων MongoDB χρησιμοποιώντας το PyMongo.

Βήματα εγκατάστασης

Η εγκατάσταση του PyMongo είναι απλή και απλή. Εδώ, υποθέτω ότι έχετε ήδη εγκαταστήσει την Python 3 και το MongoDB. Η ακόλουθη εντολή θα σας βοηθήσει να εγκαταστήσετε το PyMongo:

pip3 install pymongo

Εισαγάγετε τα δεδομένα στις βάσεις δεδομένων

Θα χρησιμοποιήσουμε τα ίδια δεδομένα που κάναμε στο προηγούμενο άρθρο. Σε περίπτωση που το έχετε ήδη, μπορείτε να μεταβείτε στην επόμενη ενότητα.

  1. Εισαγωγή των βιβλιοθηκών και σύνδεση στον πελάτη mongo

    Εκκινήστε τον διακομιστή MongoDB στον υπολογιστή σας. Υποθέτω ότι εκτελεί αρχείο στο localhost:27017.

    Ας ξεκινήσουμε εισάγοντας μερικές από τις βιβλιοθήκες που πρόκειται να χρησιμοποιήσουμε. Από προεπιλογή, ο διακομιστής MongoDB εκτελείται στη θύρα 27017 στον τοπικό υπολογιστή. Στη συνέχεια, θα συνδεθούμε στον πελάτη MongoDB χρησιμοποιώντας το pymongo βιβλιοθήκη.

    Στη συνέχεια, λάβετε την παρουσία βάσης δεδομένων της βάσης δεδομένων sample_db. Σε περίπτωση που δεν υπάρχει, η MongoDB θα δημιουργήσει ένα για εσάς.

  2. Δημιουργήστε τις Συλλογές από τα αρχεία JSON

    Θα χρησιμοποιήσουμε τα δεδομένα από μια εταιρεία παράδοσης γευμάτων που δραστηριοποιείται σε πολλές πόλεις. Επιπλέον, έχουν διάφορα κέντρα εκπλήρωσης σε αυτές τις πόλεις για την αποστολή παραγγελιών γευμάτων στους πελάτες τους. Μπορείτε να κατεβάσετε το δεδομένα και τον κωδικό εδώ.

    • weekly_demand:
      • ταυτότητα: μοναδικό αναγνωριστικό για κάθε έγγραφο
      • εβδομάδα: Αριθμός εβδομάδας
      • center_id: Μοναδικό αναγνωριστικό κέντρου εκπλήρωσης
      • meal_id: Μοναδική ταυτότητα για γεύμα
      • checkout_price: Τελική τιμή με έκπτωση, φόρους και έξοδα αποστολής
      • βασική_τιμή: Βασική τιμή του γεύματος
      • emailer_for_promotion: Το email στάλθηκε για την προώθηση του γεύματος
      • homepage_featured: Το γεύμα εμφανίζεται στην αρχική σελίδα
      • αριθμός_παραγγελιών: (Στόχος) Πλήθος παραγγελιών

  3. Εισαγάγετε δεδομένα στις Συλλογές

    Τώρα, τα δεδομένα που έχουμε είναι σε μορφή JSON. Στη συνέχεια, θα λάβουμε το παράδειγμα της συλλογής, θα διαβάσουμε το αρχείο δεδομένων και θα εισαγάγουμε τα δεδομένα χρησιμοποιώντας το εισάγετε_πολλά λειτουργία.

    https://gist.github.com/lakshay-arora/7a86d0bafe8b43d51e0dfcfd02b6f80a#file-collection_2-py

Τι είναι οι αγωγοί συγκέντρωσης;

Στις λειτουργίες συγκέντρωσης, τα δεδομένα υποβάλλονται σε επεξεργασία και τα υπολογισμένα αποτελέσματα επιστρέφονται. Εδώ, ο αγωγός συγκέντρωσης σάς παρέχει ένα πλαίσιο για τη συγκέντρωση δεδομένων και βασίζεται στην έννοια των αγωγών επεξεργασίας δεδομένων. Ακολουθεί η σύνταξή του:

your_collection.aggregate( [ { <stage1> }, { <stage2> },.. ] )

Ο αγωγός συγκέντρωσης αποτελείται από πολλαπλά στάδια. Κάθε στάδιο στη διοχέτευση μετασχηματίζει τα έγγραφα καθώς περνούν μέσω του αγωγού. Ας ρίξουμε μια ματιά σε αυτά τα στάδια-

  1. Αγώνας

    ο αγώνας Το στάδιο χρησιμοποιείται γενικά για το φιλτράρισμα των εγγράφων και εμφανίζεται κυρίως στην αρχή του αγωγού. Έχει την εξής σύνταξη:

    { $match: { <query> } }
    

    Θα πρέπει να τοποθετήσουμε το στάδιο του αγώνα όσο το δυνατόν νωρίτερα στο στάδιο της διαδικασίας, καθώς θα φιλτράρει τα έγγραφα και ο χειριστής του αγώνα θα μπορεί επίσης να εκμεταλλευτεί τα ευρετήρια.

    Στο παρακάτω παράδειγμα, στο πρώτο στάδιο, θα φιλτράρουμε τα έγγραφα όπου το center_id είναι 11 και στο δεύτερο στάδιο, θα μετρήσουμε τον αριθμό των εγγράφων που έχουν απομείνει.

    Σωληνώσεις συγκέντρωσης στο MongoDB - Σύνολο σειρών

    Ας ρίξουμε μια ματιά σε ένα άλλο παράδειγμα όπου στο πρώτο στάδιο θα φιλτράρουμε τα έγγραφα, έχοντας το center_id ως 11, και τώρα από τα φιλτραρισμένα έγγραφα, θα μάθουμε τα έγγραφα όπου η τιμή αγοράς ήταν μεγαλύτερη από 130 και μικρότερη από 140. Στο τελικό στάδιο, θα υπολογίσουμε τον συνολικό αριθμό των εγγράφων που απομένουν.

    Σωληνώσεις συγκέντρωσης στο MongoDB - Σύνολο σειρών

  2. Ομάδα

    Ο επόμενος τελεστής συγκέντρωσης είναι ο ομάδα χειριστής. Σε περίπτωση που έχετε εργαστεί με πάντα, μπορεί να έχετε δει ότι συνήθως χρησιμοποιούμε το groupby για να μάθουμε τα στατιστικά με βάση ένα συγκεκριμένο πεδίο. Για παράδειγμα, ο μέσος μισθός των εργαζομένων στο τμήμα, ο αριθμός των μοναδικών ειδών που πωλούνται από κάθε κατάστημα κ.λπ.

    Ακολουθεί η σύνταξή του:

    {
         $group:
               {
                     _id: <expression>, // Group By Expression
                    <field1>: { <accumulator1> : <expression1> },
                    ...
              }
    }

    Εάν βάλετε την τιμή του _id σε „Καμία“ ή οποιαδήποτε σταθερή τιμή όπως 0, θα υπολογίσει τα συγκεντρωτικά αποτελέσματα σε όλα τα πεδία που υπάρχουν στο έγγραφο αντί να ομαδοποιήσει τα δεδομένα σε οποιοδήποτε συγκεκριμένο πεδίο. Στο παρακάτω παράδειγμα, θα μάθουμε όλα τα έγγραφα όπου το center_id είναι 11 στο πρώτο στάδιο. Και στο δεύτερο στάδιο, αν βάλουμε _id ίσο με 0, τότε θα εξετάσει όλα τα έγγραφα και θα επιστρέψει αποτελέσματα.

    Ας ρίξουμε μια ματιά στον παρακάτω κώδικα:

    Αγωγοί συγκέντρωσης στο MongoDB - Group

    Επίσης, στον ίδιο τελεστή ομάδας, μπορούμε να προσθέσουμε διαφορετικούς συσσωρευτές όπως $avg, $sum, $first, $last και πολλά άλλα. Δείτε την πλήρη λίστα εδώ στο Τεκμηρίωση MongoDB.

    Ας ρίξουμε μια ματιά στο παρακάτω παράδειγμα. Θα υπολογίσει τη συνολική τιμή αγοράς και τη μέση τιμή ολοκλήρωσης αγοράς του center_id 11.

    Αγωγοί συγκέντρωσης στο MongoDB - Group

    Ας πάρουμε ένα άλλο παράδειγμα όπου ομαδοποιούμε τα δεδομένα στο πεδίο homepage_featured. Θα μας επιστρέψει τις διαφορετικές κατηγορίες που υπάρχουν στο καθορισμένο πεδίο „homepage_featured“.

    Αγωγοί συγκέντρωσης στο MongoDB - Group

    Στο προηγούμενο παράδειγμα, μόλις ανακαλύψαμε ότι υπήρχαν 2 κατηγορίες 0 και 1 σε όλα τα έγγραφα όπου το αναγνωριστικό κέντρο είναι 11. Τώρα, θα δούμε τη μέση τιμή αγοράς και για τις δύο αυτές κατηγορίες-

    Αγωγοί συγκέντρωσης στο MongoDB - Group

    Στη συνέχεια, ας δούμε πώς γίνεται η ομαδοποίηση σε πολλά πεδία. Για παράδειγμα, πρέπει να υπολογίσετε τον μέσο μισθό των υπαλλήλων για κάθε τμήμα και για κάθε φύλο. Στο αντικείμενο «_id» απλώς δώστε τα πεδία με τη σειρά που θέλετε να ομαδοποιηθούν τα δεδομένα.

    Στο παρακάτω παράδειγμα, πρώτα θα γίνει αντιστοίχιση των εγγράφων με το center_id 11 και για όλο τον συνδυασμό προώθησης email και αρχικής σελίδας που εμφανίζεται, θα υπολογίσει τη μέση σελίδα αναχώρησης.

    Ομάδα

  3. Κάδος

    ο κάδος Ο χειριστής θα χωρίσει τα έγγραφα σε πολλές ομάδες και στη συνέχεια θα κάνει τις λειτουργίες. Ακολουθεί η σύνταξή του:

    {
           $bucket: {
                        groupBy: <expression>,
                        boundaries: [ <lowerbound1>, <lowerbound2>, ... ],
                        default: name_of_the_label,
                       output: {
                               <output1>: { <$accumulator expression> },
                               ...
                               <outputN>: { <$accumulator expression> }
                               }
                    }
    }

    Πρέπει να παρέχετε το πεδίο στο οποίο έχετε groupby και τα όρια των κουβάδων σας και εάν σε περίπτωση κάποιο έγγραφο δεν βρίσκεται σε κανέναν από τους κάδους, μπορείτε επίσης να το βάλετε στον προεπιλεγμένο κάδο. Επιπλέον, στο αντικείμενο εξόδου, μπορείτε να ορίσετε τα στατιστικά που θέλετε για κάθε έναν από τους κάδους σας.

    Στο παρακάτω παράδειγμα, θα δημιουργηθούν 7 διαφορετικοί κάδοι στο πεδίο checkout_price και για καθένα από αυτά, θα υπολογίσουμε τον συνολικό αριθμό των εγγράφων και τον μέσο αριθμό παραγγελιών.

      Κάδος

  4. Οψη

    Είναι ένας από τους σημαντικότερους φορείς εκμετάλλευσης των αγωγών συγκέντρωσης. Θα σας επιτρέψει να δημιουργήσετε πολλαπλούς αγωγούς συγκέντρωσης στο ίδιο σύνολο εγγράφων. Κάθε αγωγός στην πτυχή θα δώσει τη δική του έξοδο. Ακολουθεί η σύνταξή του:

    { 
       $facet:
       {
          <output_field_name_1>: [ <stage1>, <stage2>, ... ],
          <output_field_name_2>: [ <stage1>, <stage2>, ... ],
          ...
    
       }
    }
    

    Κάθε ένας από τους αγωγούς εντός της πτυχής θα λάβει το ίδιο ακριβώς σύνολο εγγράφων. Κάθε ένας από τους αγωγούς είναι εντελώς ανεξάρτητος ο ένας από τον άλλο.

    Εδώ, σε αυτό το παράδειγμα, θα προσθέσουμε δύο αγωγούς συγκέντρωσης στην όψη. Στην πρώτη γραμμή, θα μάθουμε τη μέση τιμή ολοκλήρωσης αγοράς για κάθε συνδυασμό προώθησης μέσω email και αρχικής σελίδας που εμφανίζεται. Στη δεύτερη γραμμή, θα δημιουργήσουμε κουβάδες για την τιμή ολοκλήρωσης αγοράς και θα μάθουμε τον μέσο αριθμό παραγγελιών σε κάθε έναν από τους κάδους.

    Οψη

Σημειώσεις τέλους

Συνοψίζοντας, σε αυτό το άρθρο, μάθαμε πώς να δημιουργήσουμε αγωγούς συγκέντρωσης σε μια βάση δεδομένων MongoDB χρησιμοποιώντας το PyMongo. Επίσης, καταλάβαμε πώς να εφαρμόσουμε διάφορους τελεστές όπως το match, το group, το bucket και το facet.

Σε περίπτωση που θέλετε να μάθετε περισσότερα σχετικά με την αναζήτηση δεδομένων, προτείνω το ακόλουθο μάθημα – Structured Query Language (SQL) για Επιστήμη Δεδομένων

Σας ενθαρρύνω να δοκιμάσετε πράγματα μόνοι σας και να μοιραστείτε τις εμπειρίες σας στην ενότητα σχολίων. Επιπλέον, εάν αντιμετωπίζετε οποιοδήποτε πρόβλημα με κάποια από τις παραπάνω έννοιες, μη διστάσετε να με ρωτήσετε στα σχόλια παρακάτω.