Πώς να δημιουργήσετε ένα μοναδικό ευρετήριο στο MongoDB

Pos Na Demiourgesete Ena Monadiko Eureterio Sto Mongodb



Στο MongoDB, ένα μοναδικό ευρετήριο διασφαλίζει ότι κάθε τιμή σε ένα συγκεκριμένο πεδίο ή ομάδα πεδίων μέσα σε μια συλλογή είναι μοναδική. Χρησιμοποιώντας τη μέθοδο createIndex(), μπορούμε να δημιουργήσουμε ένα μοναδικό πεδίο ευρετηρίου για τη συγκεκριμένη συλλογή. Για τον σκοπό της διατήρησης της ακεραιότητας των δεδομένων και της αποφυγής διπλών καταχωρήσεων σε ζωτικά πεδία, είναι χρήσιμα τα μοναδικά ευρετήρια. Το άρθρο κάλυψε τους τρόπους δημιουργίας ενός μοναδικού ευρετηρίου για τη συγκεκριμένη συλλογή. db.candidates.insertMany([

{ όνομα: 'Alexa Bill' , Βαθμός: 'ΕΝΑ' , σειρά μαθημάτων: 'Πύθων' },

{ όνομα: 'Τζέιν Μαρκς' , Βαθμός: 'ΣΙ' , σειρά μαθημάτων: 'Ιάβα' },

{ όνομα: 'Paul Ken' , Βαθμός: 'ΝΤΟ' , σειρά μαθημάτων: 'ΝΤΟ#' },

{ όνομα: 'Emily Jeo' , Βαθμός: 'ΡΕ' , σειρά μαθημάτων: 'php' }

]);

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







Παράδειγμα 1: Δημιουργήστε ένα μοναδικό ευρετήριο ενός μεμονωμένου πεδίου

Μπορούμε να δημιουργήσουμε το ευρετήριο χρησιμοποιώντας τη μέθοδο createIndex() και μπορούμε να κάνουμε αυτό το πεδίο μοναδικό καθορίζοντας τη μοναδική επιλογή με το Boolean 'true'.



db.candidates.createIndex( {βαθμός: 1 }, { μοναδικό: αληθινό } )

Εδώ, ξεκινάμε τη μέθοδο createIndex() στη συλλογή 'υποψήφιοι' για να δημιουργήσουμε ένα μοναδικό ευρετήριο ενός συγκεκριμένου πεδίου. Στη συνέχεια, δίνουμε στο πεδίο «βαθμός» την τιμή «1» για την προδιαγραφή ευρετηρίου. Η τιμή του '1' εδώ αντιπροσωπεύει τον αύξοντα δείκτη της συλλογής. Στη συνέχεια, καθορίζουμε την επιλογή 'μοναδική' με την τιμή 'αληθής' για να επιβάλουμε τη μοναδικότητα του πεδίου 'βαθμός'.



Η έξοδος αντιπροσωπεύει ότι το μοναδικό ευρετήριο στο πεδίο 'βαθμός' δημιουργείται για τη συλλογή 'υποψήφιοι':





Παράδειγμα 2: Δημιουργήστε ένα μοναδικό ευρετήριο με περισσότερα από ένα πεδία

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



db.candidates.createIndex( {βαθμός: 1 , σειρά μαθημάτων: 1 }, { μοναδικό: αληθινό } )

Εδώ, καλούμε τη μέθοδο createIndex() στην ίδια συλλογή 'υποψήφιων'. Καθορίζουμε δύο πεδία στη μέθοδο createIndex() – “grade” και “course” – με την τιμή “1” ως πρώτη έκφραση. Στη συνέχεια, ορίζουμε τη μοναδική επιλογή με την τιμή 'true' για να δημιουργήσουμε αυτά τα δύο μοναδικά πεδία.

Η έξοδος αντιπροσωπεύει δύο μοναδικά ευρετήρια, 'βαθμός_1' και 'μάθημα_1', για την ακόλουθη συλλογή 'υποψήφιων':

Παράδειγμα 3: Δημιουργήστε ένα σύνθετο μοναδικό ευρετήριο των πεδίων

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

db.candidates.createIndex( {όνομα: 1 , Βαθμός: 1 , σειρά μαθημάτων: 1 }, { μοναδικό: αληθινό }

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

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

Παράδειγμα 4: Δημιουργήστε ένα μοναδικό ευρετήριο διπλότυπων τιμών πεδίων

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

db.candidates.createIndex({name: 1 },{unique:true})

Εδώ, εφαρμόζουμε τα κριτήρια μοναδικού ευρετηρίου για το πεδίο που περιέχει παρόμοιες τιμές. Μέσα στη μέθοδο createIndex(), καλούμε το πεδίο 'όνομα' με την τιμή '1' για να το κάνουμε μοναδικό ευρετήριο και ορίζουμε τη μοναδική επιλογή με την τιμή 'true'. Καθώς τα δύο έγγραφα έχουν το πεδίο 'όνομα' με ίδιες τιμές, δεν μπορούμε να κάνουμε αυτό το πεδίο μοναδικό ευρετήριο της συλλογής 'υποψήφιοι'. Το σφάλμα διπλού κλειδιού ενεργοποιείται κατά την εκτέλεση του ερωτήματος.

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

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

Παράδειγμα 5: Δημιουργήστε ένα μοναδικό ευρετήριο ενός πεδίου που λείπει

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

db.candidates.createIndex( { email: 1 }, { μοναδικό: αληθινό } )

Εδώ, χρησιμοποιούμε τη μέθοδο createIndex() όπου το πεδίο 'email' παρέχεται με την τιμή '1'. Το πεδίο 'email' δεν υπάρχει στη συλλογή 'υποψήφιοι' και προσπαθούμε να το κάνουμε μοναδικό ευρετήριο για τη συλλογή 'υποψήφιοι' ορίζοντας τη μοναδική επιλογή σε 'true'.

Όταν εκτελείται το ερώτημα για αυτό, λαμβάνουμε το σφάλμα στην έξοδο, καθώς το πεδίο 'email' λείπει από τη συλλογή 'υποψήφιοι':

Παράδειγμα 6: Δημιουργήστε ένα μοναδικό ευρετήριο ενός πεδίου με μια αραιή επιλογή

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

db.candidates.createIndex( { course : 1 },

{ όνομα: 'unique_sparse_course_index' , μοναδικό: αληθινό, αραιό: αληθινό } )

Εδώ, παρέχουμε τη μέθοδο createIndex() όπου το πεδίο 'course' ορίζεται με την τιμή '1'. Μετά από αυτό, καθορίζουμε την πρόσθετη επιλογή για να ορίσετε ένα μοναδικό πεδίο ευρετηρίου που είναι 'μάθημα'. Οι επιλογές περιλαμβάνουν το 'όνομα' που ορίζει το ευρετήριο 'unique_sparse_course_index'. Έπειτα, έχουμε την επιλογή 'μοναδική' η οποία καθορίζεται με την τιμή 'true' και η επιλογή 'sparse' ορίζεται επίσης σε 'true'.

Η έξοδος δημιουργεί ένα μοναδικό και αραιό ευρετήριο στο πεδίο 'course' όπως φαίνεται παρακάτω:

Παράδειγμα 7: Εμφάνιση του Δημιουργημένου μοναδικού ευρετηρίου χρησιμοποιώντας τη μέθοδο GetIndexes()

Στο προηγούμενο παράδειγμα, δημιουργήθηκε μόνο ένα μοναδικό ευρετήριο για την παρεχόμενη συλλογή. Για να προβάλουμε και να λάβουμε πληροφορίες σχετικά με τα μοναδικά ευρετήρια για τη συλλογή 'υποψήφιοι', χρησιμοποιούμε την ακόλουθη μέθοδο getIndexes():

db.candidates.getIndexes();

Εδώ, καλούμε τη συνάρτηση getIndexes() στη συλλογή 'υποψήφιοι'. Η συνάρτηση getIndexes() επιστρέφει όλα τα πεδία ευρετηρίου για τη συλλογή 'υποψήφιοι' που δημιουργήσαμε στα προηγούμενα παραδείγματα.

Η έξοδος εμφανίζει το μοναδικό ευρετήριο που δημιουργήσαμε για τη συλλογή: είτε μοναδικό ευρετήριο, σύνθετο ευρετήριο είτε μοναδικό αραιό ευρετήριο:

συμπέρασμα

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