Χειριστής MongoDB $Max

Cheiristes Mongodb Max



Η MongoDB βρήκε πολλούς χειριστές για να πραγματοποιήσει συναλλαγές ειδικού σκοπού, όπως ενημέρωση των εγγραφών, προσθήκη νέας εγγραφής και εμφάνιση των εγγραφών υπό ορισμένες συνθήκες. Ένας από αυτούς τους τελεστές είναι ο τελεστής '$max' που χρησιμοποιείται για τον έλεγχο της μεγαλύτερης τιμής στην εγγραφή. Εκτός από αυτό, μπορούμε να το χρησιμοποιήσουμε για να ενημερώσουμε τη μικρότερη τιμή με μια νέα μεγαλύτερη τιμή αφού τις συγκρίνουμε στην εντολή της λειτουργίας «ενημέρωση». Η άλλη χρήση του τελεστή '$max' είναι η ομαδοποίηση και εμφάνιση των εγγραφών μιας συγκεκριμένης συλλογής με τρόπο που να μπορεί να εμφανίσει μόνο τη μεγαλύτερη τιμή ενώ αγνοεί τη μικρότερη τιμή όταν υπάρχουν μερικές διπλές εγγραφές στη βάση δεδομένων. Σε αυτόν τον οδηγό, πρόκειται να χρησιμοποιήσουμε απλά παραδείγματα ερωτημάτων για να συζητήσουμε τις προαναφερθείσες χρήσεις του τελεστή «$max» στο βοηθητικό πρόγραμμα γραμμής εντολών MongoDB στην πλατφόρμα των Windows.

Παράδειγμα 1:

Ξεκινώντας με την απεικόνιση για να συζητήσουμε και πώς λειτουργεί ο τελεστής '$max' στο κέλυφος MongoDB, πρέπει να έχουμε μια συλλογή με το όνομα 'data' που πρέπει να δημιουργηθεί ήδη. Για να δημιουργήσουμε αυτήν τη συλλογή, πρέπει να προσθέσουμε κάποιες εγγραφές σε αυτήν απευθείας χωρίς τη χρήση οποιασδήποτε εντολής 'δημιουργία'. Η εντολή εισαγωγής είναι αρκετή για να δημιουργήσετε μια συλλογή και να προσθέσετε τις εγγραφές σε αυτήν. Χρησιμοποιούμε τη συνάρτηση 'insertMany' στο ερώτημα για να προσθέσουμε τέσσερις εγγραφές, καθεμία από τις οποίες έχει 4 πεδία διαφορετικών τύπων.

δοκιμή > db.data.insertΠολλοί ( [ { 'ταυτότητα' : ένας , 'Ονομα' : 'Μπράβο' , 'Μισθός' : 65000 , 'Ηλικία' : 44 } ,
... { 'ταυτότητα' : 2 , 'Ονομα' : 'Στέφανος' , 'Μισθός' : 77000 , 'Ηλικία' : 55 } ,
... { 'ταυτότητα' : 3 , 'Ονομα' : 'ΜΑΡΙΑ' , 'Μισθός' : 42000 , 'Ηλικία' : 27 } ,
... { 'ταυτότητα' : 4 , 'Ονομα' : 'Χόκιν' , 'Μισθός' : 58000 , 'Ηλικία' : 33 } ] )







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



Αφού εισαγάγετε τις εγγραφές στη συλλογή «δεδομένων» του MongoDB μας, ήρθε η ώρα να δείτε αυτές τις εγγραφές στο κέλυφος. Έτσι, εκτελούμε την εντολή της συνάρτησης «find()» στο MongoDB Cli ακολουθούμενη από τη συνάρτηση «forEach()», λαμβάνοντας το όρισμα printjson για να εμφανίσουμε ένα αποτέλεσμα σε μορφή JSON. Το αποτέλεσμα που εμφανίζεται στο κέλυφος δείχνει συνολικά 4 έγγραφα στη συλλογή τα οποία εμφανίζονται στην ακόλουθη εικόνα εξόδου:



δοκιμή > db.data.find ( ) .για κάθε ( printjson )





Ας δοκιμάσουμε τον τελεστή '$max' στην εντολή ενημέρωσης του MongoDB για να τροποποιήσουμε τις ήδη εισηγμένες εγγραφές. Έτσι, η updateOne() χρησιμοποιείται εδώ για την τροποποίηση μόνο μιας εγγραφής συλλογής 'δεδομένων' όπως μια συγκεκριμένη εγγραφή όπου το πεδίο 'id' έχει τιμή '2'. Ο τελεστής '$max' εφαρμόζεται στο πεδίο 'Μισθός' της συλλογής 'δεδομένων' για να ελέγξει εάν το πεδίο 'Μισθός' έχει τιμή μεγαλύτερη από 55000. Εάν όχι, ενημερώστε την εγγραφή με 55000. Το αποτέλεσμα εξόδου για αυτό Το ερώτημα συνάρτησης updateOne() που εμφανίζει ένα πλήθος τροποποιήσεων '0' ως εγγραφή '2' έχει αξία μισθού μικρότερη από 55000.

δοκιμή > db.data.updateOne ( { ταυτότητα: 2 } , { $max : { Μισθός: 55000 } } )



Μετά από αυτήν την ενημέρωση, δοκιμάζουμε το ίδιο ερώτημα συνάρτησης «find()» για να εμφανίσουμε το τροποποιημένο αποτέλεσμα στο κέλυφος της γραμμής εντολών MongoDB. Αλλά παίρνουμε την ίδια έξοδο που λάβαμε πριν χρησιμοποιήσουμε την εντολή 'ενημέρωση'. Δεν υπήρξε καμία αλλαγή επειδή η τιμή 77000 είναι μεγαλύτερη από 55000.

δοκιμή > db.data.find ( ) .για κάθε ( printjson )

Ας δοκιμάσουμε ξανά το ίδιο ερώτημα updateOne() με μια μικρή τροποποίηση. Αυτή τη φορά, δοκιμάζουμε τη μεγαλύτερη τιμή που είναι '85000' από την τιμή '77000' που βρίσκεται ήδη στο πεδίο 'Μισθός' της συλλογής 'δεδομένων' για να κάνουμε τη διαφορά στην παραγωγή μας. Η έξοδος δείχνει το πλήθος τροποποιήσεων '1' αυτή τη φορά καθώς η τιμή '85000' αντικαθιστά την ήδη ισχύουσα τιμή '77000' στο πεδίο αφού η σύγκριση έγινε μόνο λόγω του τελεστή '$max' σε αυτό το ερώτημα.

δοκιμή > db.data.updateOne ( { ταυτότητα: 2 } , { $max : { Μισθός: 85000 } } )

Μετά την επιτυχή αντικατάσταση της μικρότερης τιμής '77000' με μια νέα τιμή '85000' μέσω του τελεστή '$max' του MongoDB, χρησιμοποιούμε τελικά τη συνάρτηση 'find()' στην οδηγία 'db' για να ελέγξουμε για αυτήν την ενημέρωση. είτε έχει ενημερωθεί με επιτυχία είτε όχι. Η έξοδος δείχνει ότι η τιμή στο πεδίο 'Μισθός' μιας 2ης εγγραφής αυτής της συλλογής είναι τέλεια ενημερωμένη.

δοκιμή > db.data.find ( ) .για κάθε ( printjson )

Παράδειγμα 2:

Ας μεταβούμε σε ένα άλλο παράδειγμα για να χρησιμοποιήσουμε τον τελεστή '$max' στο MongoDB. Αυτή τη φορά, αποκλείουμε τον τελεστή '$max' για να ομαδοποιήσουμε και να εμφανίσουμε τις μοναδικές εγγραφές μιας συλλογής, εάν υπάρχουν διπλότυπα για τις ίδιες τιμές πεδίου. Για αυτό, εισάγουμε 2 ακόμη εγγραφές στη συλλογή «δεδομένων» μιας «δοκιμαστικής» βάσης δεδομένων. Αυτές οι εγγραφές περιέχουν τις 2 ίδιες τιμές στο πεδίο 'Όνομα' που βρίσκονται επίσης στις 4 εγγραφές που έχουν ήδη εισαχθεί και οι υπόλοιπες είναι διαφορετικές. Για να εισαγάγουμε τις εγγραφές, χρησιμοποιούμε την ίδια εντολή «db» που περιέχει τη συνάρτηση «insertMany» για να ενημερωθεί η συλλογή «δεδομένων».

δοκιμή > db.data.insertΠολλοί ( [ { 'ταυτότητα' : 5 , 'Ονομα' : 'Μπράβο' , 'Μισθός' : 35000 , 'Ηλικία' : Τέσσερα πέντε } ,
{ 'ταυτότητα' : 6 , 'Ονομα' : 'Χόκιν' , 'Μισθός' : 67000 , 'Ηλικία' : 33 } ] )

Η εντολή εκτελείται με επιτυχία.

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

δοκιμή > db.data.find ( ) .για κάθε ( printjson )

Αφού εμφανιστούν οι 6 εγγραφές συλλογής «δεδομένων», είμαστε έτοιμοι να εκτελέσουμε τη συνάρτηση συγκεντρωτικών στοιχείων σε αυτήν. Ως εκ τούτου, η συνάρτηση 'συγκεντρωτικό' χρησιμοποιείται στο ακόλουθο ερώτημα. Με αυτήν τη συνάρτηση, χρησιμοποιούμε τον τελεστή «$group» για να ομαδοποιήσουμε την εγγραφή μιας συλλογής «δεδομένων» σύμφωνα με τα μοναδικά ονόματα του πεδίου «id» και του πεδίου «Μισθός». Ο τελεστής '$max' εφαρμόζεται στο πεδίο 'Μισθός' των εγγραφών για να ληφθούν οι μέγιστες τιμές που θα εμφανίζονται. Λάβετε τη μεγαλύτερη τιμή από το πεδίο Μισθός» σύμφωνα με τα διπλά ονόματα στο πεδίο «Όνομα» που χρησιμοποιείται ως «αναγνωριστικό» για την εμφάνιση αυτής της ομαδοποίησης. Εμφανίζονται συνολικά 4 εγγραφές. Η μικρότερη τιμή (από τις διπλές εγγραφές) αγνοούνται ενώ εμφανίζεται η μεγαλύτερη τιμή.

db.data.aggregate ( [ { $ομάδα : { _ταυτότητα: ' $Name ' , Μισθός: { $max : ' $Μισθός ' } } } ] )

συμπέρασμα

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