Η συγκέντρωση στο MongoDB είναι ένα πολύτιμο εργαλείο για την ανάλυση και το φιλτράρισμα βάσεων δεδομένων. Το σύστημα pipeline καθιστά δυνατή την καθορισμό ερωτημάτων, επιτρέποντας εξαιρετικά εξατομικευμένα αποτελέσματα.

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

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

Τα έγγραφα σε δυαδική μορφή JSON BSON ομαδοποιούνται σε συλλογές και μπορούν να αναζητηθούν και να επεξεργαστούν χρησιμοποιώντας τη γλώσσα ερωτήσεων MongoDB (MQL). Παρόλο που αυτή η γλώσσα προσφέρει πολλές επιλογές, δεν είναι κατάλληλη (ή ίσως δεν είναι αρκετά κατάλληλη) για την ανάλυση δεδομένων. Για αυτόν τον λόγο, το MongoDB παρέχει τη δυνατότητα συγκέντρωσης.

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

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

Τι χρειάζομαι για την συγκέντρωση δεδομένων στο MongoDB;

Υπάρχουν μόνο λίγες προϋποθέσεις για τη χρήση της συγκέντρωσης στο MongoDB. Η μέθοδος εκτελείται στο shell και λειτουργεί σύμφωνα με λογικούς κανόνες που μπορείτε να προσαρμόσετε ώστε να ανταποκρίνονται στις ανάγκες της ανάλυσής σας.

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

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

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

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

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

Μερικές φορές, για να εξαχθούν σημαντικά συμπεράσματα, πρέπει να ληφθούν υπόψη διαφορετικές πηγές μέσα σε μια βάση δεδομένων. Η συγκέντρωση MongoDB χρησιμοποιείται για τέτοιες περιπτώσεις. Για να επιτευχθούν τέτοια αποτελέσματα, η μέθοδος aggregate ( ) χρησιμοποιεί pipelines.

Ο ρόλος του αγωγού

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

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

Σύνταξη του αγωγού συγκέντρωσης MongoDB

Πρώτα, αξίζει να ρίξουμε μια σύντομη ματιά στη σύνταξη της συγκέντρωσης στο MongoDB. Η μέθοδος έχει πάντα την ίδια δομή και μπορεί να προσαρμοστεί στις συγκεκριμένες απαιτήσεις σας. Η βασική δομή έχει ως εξής:

db.collection_name.aggregate ( pipeline, options )
shell

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

Στάδια του αγωγού

Υπάρχουν πολλά στάδια για τον αγωγό συγκέντρωσης στο MongoDB. Τα περισσότερα από αυτά μπορούν να χρησιμοποιηθούν πολλές φορές μέσα σε έναν αγωγό. Η αναφορά όλων των επιλογών εδώ θα ξεπερνούσε το πεδίο εφαρμογής αυτού του άρθρου, ειδικά καθώς ορισμένες απαιτούνται μόνο για πολύ συγκεκριμένες λειτουργίες. Ωστόσο, για να σας δώσουμε μια ιδέα για τα στάδια, θα αναφερθούμε σε μερικά από τα πιο συχνά χρησιμοποιούμενα εδώ:

  • $count: Αυτό το στάδιο σας δίνει μια ένδειξη για τον αριθμό των εγγράφων BSON που έχουν ληφθεί υπόψη για το στάδιο ή τα στάδια της διαδικασίας.
  • $group: Αυτό το στάδιο ταξινομεί και ομαδοποιεί τα έγγραφα σύμφωνα με συγκεκριμένες παραμέτρους.
  • $limit: Περιορίζει τον αριθμό των εγγράφων που μεταβιβάζονται στο επόμενο στάδιο της διαδικασίας.
  • $match: Με το στάδιο $match, περιορίζετε τα έγγραφα που χρησιμοποιούνται για το επόμενο στάδιο.
  • $out: Αυτό το στάδιο χρησιμοποιείται για να συμπεριλάβει τα αποτελέσματα της συγκέντρωσης MongoDB στη συλλογή. Αυτό το στάδιο μπορεί να χρησιμοποιηθεί μόνο στο τέλος ενός αγωγού.
  • $project: Χρησιμοποιήστε το $project για να επιλέξετε συγκεκριμένα πεδία από μια συλλογή.
  • $skip: Αυτό το στάδιο αγνοεί έναν συγκεκριμένο αριθμό εγγράφων. Μπορείτε να το καθορίσετε με μια επιλογή.
  • $sort: Αυτή η λειτουργία ταξινομεί τα έγγραφα στη συλλογή του χρήστη. Ωστόσο, τα έγγραφα δεν αλλάζουν πέρα από αυτό.
  • $unset: Το $unset εξαιρεί ορισμένα πεδία. Κάνει το αντίθετο από αυτό που κάνει το $project.

Ένα παράδειγμα συγκέντρωσης στο MongoDB

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

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

{
	"name" : "Smith",
	"city" : "Glasgow",
	"country" : "Scotland",
	"quantity" : 14
}
shell

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

Αν θέλετε να δοκιμάσετε την συγκέντρωση στο MongoDB, μπορείτε να χρησιμοποιήσετε τη μέθοδο insertMany ( ) για να προσθέσετε όλα τα έγγραφα με τα δεδομένα των πελατών στη συλλογή με το όνομα «customers»:

db.customers.insertMany ( [
	{ "name" : "Smith", "city" : "Glasgow", "country" : "Scotland", "quantity" : 14 },
	{ "name" : "Meyer", "city" : "Hamburg", "country" : "Germany", "quantity" : 26 },
	{ "name" : "Lee", "city" : "Birmingham", "country" : "England", "quantity" : 5 },
	{ "name" : "Rodriguez", "city" : "Madrid", "country" : "Spain", "quantity" : 19 },
	{ "name" : "Nowak", "city" : "Krakow", "country" : "Poland", "quantity" : 13 },
{ "name" : "Rossi", "city" : "Milano", "country" : "Italy", "quantity" : 10 },
{ "name" : "Arslan", "city" : "Ankara", "country" : "Turkey", "quantity" : 18 },
{ "name" : "Martin", "city" : "Lyon", "country" : "France", "quantity" : 9 },
{ "name" : "Mancini", "city" : "Rome", "country" : "Italy", "quantity" : 21 },
{ "name" : "Schulz", "city" : "Munich", "country" : "Germany", "quantity" : 2 }
] )
shell

Θα εμφανιστεί μια λίστα με τους αναγνωριστικούς κωδικούς αντικειμένων για κάθε μεμονωμένο έγγραφο.

Πώς να χρησιμοποιήσετε το $match

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

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

db.customers.aggregate ( [
	{ $match : { "country" : "Italy" } }
] )
shell

Τώρα θα εμφανίζονται μόνο τα αναγνωριστικά αντικειμένων και οι πληροφορίες των δύο πελατών από την Ιταλία.

Χρησιμοποιήστε το $sort για καλύτερη επισκόπηση

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

db.customers.aggregate ( [
	{ $sort : { "quantity" : -1 } }
] )
shell

Περιορίστε την έξοδο με $project

Με τα στάδια που έχουν χρησιμοποιηθεί μέχρι τώρα, θα δείτε ότι η έξοδος είναι σχετικά εκτενής. Για παράδειγμα, εκτός από τις πραγματικές πληροφορίες που περιέχονται στα έγγραφα, εμφανίζεται πάντα και το αναγνωριστικό αντικειμένου. Μπορείτε να χρησιμοποιήσετε το $project στον αγωγό συγκέντρωσης MongoDB για να καθορίσετε ποιες πληροφορίες πρέπει να εμφανίζονται. Για να το κάνετε αυτό, ορίζουμε την τιμή 1 για τα υποχρεωτικά πεδία και 0 για τα πεδία που δεν χρειάζεται να περιλαμβάνονται στην έξοδο. Στο παράδειγμά μας, θέλουμε να δούμε μόνο το όνομα του πελάτη και τον αριθμό των προϊόντων που αγοράστηκαν. Για να το κάνουμε αυτό, εισάγουμε τα εξής:

db.customers.aggregate ( [
	{ $project : { _id : 0, name : 1, city : 0, country : 0, quantity : 1 } }
] )
shell

Συνδυάστε πολλαπλά στάδια με συγκέντρωση στο MongoDB

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

db.customers.aggregate ( [
	{ $match : { "country" : "Scotland" } }
	{ $project : { _id : 0, name : 1, city : 0, country : 0, quantity : 1 } }
	{ $sort : { "quantity" : -1 } }
] )
shell
Go to Main Menu