Τρόπος μέτρησης εγγράφων με το MongoDB Aggregate Count

Tropos Metreses Engraphon Me To Mongodb Aggregate Count



Όπως υποδηλώνει το όνομα, η συγκέντρωση $count στο MongoDB πρέπει να χρησιμοποιηθεί για την καταμέτρηση εγγραφών πεδίου. Ένας από τους δημοφιλείς τρόπους μέτρησης εγγραφών είναι η χρήση της μεθόδου count(). Επιπλέον, ορισμένοι τελεστές συγκέντρωσης σάς επιτρέπουν να μετράτε εγγραφές που έχουν εισαχθεί από ένα προηγούμενο στάδιο του αγωγού συγκεντρωτικών στοιχείων. Μέσα σε αυτόν τον οδηγό σήμερα, θα συζητήσουμε τη συνάθροιση καταμέτρησης του MongoDB χρησιμοποιώντας παραδείγματα κώδικα.

Παράδειγμα 01

Για να εκτελέσουμε τη λειτουργία $count στα πεδία μιας συλλογής βάσης δεδομένων στο MongoDB, πρέπει να έχουμε πολλές εγγραφές. Επομένως, δημιουργήσαμε μια συλλογή με το όνομα 'Test' και εισαγάγαμε 12 εγγραφές σε αυτήν ταυτόχρονα χρησιμοποιώντας τη συνάρτηση insertMany(). Τώρα, οι εγγραφές αυτής της συλλογής 'Test' έχουν εμφανιστεί στο κέλυφος MongoDB μέσω του ερωτήματος συνάρτησης find(). Μπορείτε να δείτε ότι έχει συνολικά τρία πεδία:_id, name και score.

test> db.Test.find({})







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



Στην περίπτωσή μας, χρησιμοποιούσαμε τον τελεστή $match για να αναζητήσουμε τις αντίστοιχες εγγραφές για την τιμή '60' στο πεδίο βαθμολογίας, ενώ ο τελεστής $count χρησιμοποιήθηκε για να μετρήσει τον συνολικό αριθμό των εγγραφών που ανακτήθηκαν και να τις εμφανίσει κάτω από το νέο πεδίο με το όνομα 'SameScore'. Η έξοδος για αυτό το ερώτημα εμφανίζει ένα πεδίο 'SameScore' με την τιμή '2' που υποδεικνύει ότι υπάρχουν δύο εγγραφές με την τιμή 'score' '60' είναι 2 στη συλλογή 'Test'.



db.Test.agregate([ { $match: { 'σκορ' : 60 } }, { $count: 'SameScore' } ])

Μπορείτε επίσης να χρησιμοποιήσετε τη συνάθροιση $count για να μετρήσετε τα πεδία εκτός των αριθμών, όπως το πεδίο 'όνομα' της συλλογής Test. Χρησιμοποιήσαμε τη συγκέντρωση αντιστοίχισης για να αναζητήσουμε την εγγραφή στη συλλογή όπου το πεδίο ονόματος έχει την τιμή 'John'. Η συνάθροιση καταμέτρησης μέτρησε με επιτυχία τον συνολικό αριθμό των εγγραφών που ταιριάστηκαν, που είναι 2.





db.Test.agregate([ { $match: { 'όνομα' : 'Γιάννης' } }, { $count: 'Ιδιο όνομα' } ])

Παράδειγμα 02

Ας ενημερώσουμε το παραπάνω ερώτημα και ας εφαρμόσουμε μια άλλη συνθήκη για να λάβουμε διαφορετικές εγγραφές. Αυτή τη φορά, θα εφαρμόσουμε τη συνάθροιση $match του πεδίου βαθμολογίας για να λάβουμε το συνολικό πλήθος εγγραφών όπου το πεδίο βαθμολογίας έχει τιμή μικρότερη από 30. Η συγκέντρωση μέτρησης θα μετρήσει τον συνολικό αριθμό των εγγραφών και θα προσθέσει σε ένα νέο στήλη 'GradeD'. Η έξοδος δείχνει το αποτέλεσμα '2' ως τον αριθμό μέτρησης για την αντιστοιχισμένη τιμή.

db.Test.aggregate( [ { $match: { score: { $lt: 30 } } }, { $count: 'Βαθμολογημένος' } ] )

Μπορείτε επίσης να χρησιμοποιήσετε τη συνάθροιση $count ενώ εφαρμόζετε τους λογικούς τελεστές για να εκτελέσετε περισσότερες από 1 συνθήκες στις εγγραφές πεδίου. Επομένως, έχουν εφαρμοστεί συνολικά δύο συνθήκες στο πεδίο «Βαθμολογία» χρησιμοποιώντας τον τελεστή $and: gte (μεγαλύτερο ή ίσο με) και lte (μικρότερο από και ίσο με). Και οι δύο προϋποθέσεις πρέπει να ισχύουν για να βγει το αποτέλεσμα και να μετρηθούν τα ρεκόρ του. Η συνολική καταμέτρηση δείχνει ότι υπάρχουν πέντε εγγραφές με τα κριτήρια που ταιριάζουν.



db.Test.agregate( [ { $match: { '$and' : [ { 'σκορ' : {$gte: 60 }}, { 'σκορ' : {$lte: 80 }} ] }},

{ $count: 'Β τάξη' } ] )

Παράδειγμα 03

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

Για αυτό, πρέπει να χρησιμοποιήσετε τη συνάθροιση $group εντός της εντολής συνάρτησης aggregate, όπως παρακάτω. Το πεδίο _id έχει χρησιμοποιηθεί για τον καθορισμό του πεδίου 'όνομα' στο οποίο θα λειτουργούσε η συνάθροιση καταμέτρησης. Μαζί με αυτό, το πεδίο NameCount που ορίζεται από τον χρήστη θα χρησιμοποιήσει τη συγκέντρωση $count για να μετρήσει πολλά διπλότυπα στο πεδίο 'όνομα'.

Η έξοδος για αυτό το ερώτημα έχει εμφανιστεί από κάτω. Περιέχει τις τιμές από το πεδίο 'όνομα' και τον αριθμό καταμέτρησής τους στο πεδίο NameCount σύμφωνα με διπλασιασμούς τιμών, όπως η Cillian που έχει 4 διπλότυπα κ.λπ.

db.Test.aggregate([ { $group: { _id: '$name' , NameCount: { $count: {} }, }, }, ])

Παράδειγμα 04

Μπορούμε επίσης να χρησιμοποιήσουμε τη συνάθροιση μέτρησης σε ένθετες εγγραφές πεδίων για να μετρήσουμε συγκεκριμένες τιμές πεδίων. Για να το αναλύσουμε αυτό, δημιουργήσαμε μια συλλογή με το όνομα 'Δάσκαλος' και προσθέσαμε ένθετο πεδίο 'sub' και πεδίο τύπου πίνακα 'shift' σε αυτήν μαζί με άλλα πεδία: όνομα και πληρωμή. Η συνάρτηση find() εμφανίζει και τις πέντε εγγραφές αυτής της συλλογής.

test> db.Teacher.find({})

Τώρα, εφαρμόσαμε τη συνάρτηση συγκεντρωτικών στοιχείων που περιέχει τον τελεστή αντιστοίχισης. Επίσης, ο τελεστής $και έχει εφαρμοστεί στο υποπεδίο 'μαθηματικά' του πεδίου 'sub', το οποίο περιέχει δύο διαφορετικές συνθήκες. Στη συνέχεια, η καταμέτρηση έχει υπολογιστεί. Η έξοδος δείχνει ότι υπάρχουν δύο εγγραφές όπου τα μαθηματικά του υποπεδίου έχουν τιμές μεγαλύτερες από 10 και λιγότερες από 20.

db.Teacher.aggregate( [ { $match: { '$and' : [ { 'υπο.μαθηματικά' : {$gte: 10 }}, { 'υπο.μαθηματικά' : {$lte: είκοσι }} ] }}, { $count: 'Βαθμός Α' } ] )

Παράδειγμα 05

Ας δούμε το τελευταίο παράδειγμα για να το δείξουμε χρησιμοποιώντας τη συνάρτηση count() αυτή τη φορά αντί να χρησιμοποιήσουμε τη συνάθροιση count. Έτσι, η συνάρτηση count() έχει εφαρμοστεί στο πεδίο τύπου πίνακα της συλλογής 'Teacher', δηλαδή 'shift'. Χρησιμοποιώντας τα ευρετήρια για το πεδίο πίνακα χρησιμοποιώντας το δείκτη 2, έχουμε καθορίσει τα κριτήρια αντιστοίχισης ως 'νύχτα'. Βγάζει '2' ως τον συνολικό αριθμό μετρήσεων για την καταχώρηση 'νύχτα'.

db.Teacher.count({ 'shift.2' : 'Νύχτα' })

Με παρόμοιο τρόπο, η συνάρτηση count() μπορεί επίσης να εφαρμοστεί στα ένθετα πεδία, όπως το υποπεδίο 'phy' του πεδίου 'sub' από τη συλλογή 'Teacher'. Έχουμε καθορίσει τα κριτήρια αντιστοίχισης χρησιμοποιώντας τον τελεστή 'lte' που δείχνει τιμές μικρότερες από 14 στο υποπεδίο 'phy'. Η έξοδος αυτής της εντολής εμφανίζει '2', δηλαδή 4 εγγραφές με τιμή μικρότερη από 14.

db.Teacher.count( { 'sub.phy' : { $lte: 14 } })

συμπέρασμα

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