MongoDB Ευρετηρίαση: createIndex() & dropIndex()
⚡ Έξυπνη Σύνοψη
MongoDB Τα ευρετήρια αποθηκεύουν ένα ταξινομημένο υποσύνολο των πεδίων μιας συλλογής, έτσι ώστε τα ερωτήματα να μπορούν να εντοπίζουν έγγραφα χωρίς να σαρώνουν κάθε εγγραφή. Οι μέθοδοι createIndex, getIndexes και dropIndex δημιουργούν, παραθέτουν και καταργούν αυτές τις δομές κρίσιμες για την απόδοση.

Τι είναι MongoDB Ευρετήρια;
Τα ευρετήρια είναι πολύ σημαντικά σε κάθε βάση δεδομένων και με MongoDB δεν είναι διαφορετικό. Με τη χρήση ευρετηρίων, η εκτέλεση ερωτημάτων σε MongoDB γίνεται πιο αποτελεσματική.
Αν είχατε μια συλλογή με χιλιάδες έγγραφα χωρίς ευρετήρια και στη συνέχεια υποβάλετε ερώτημα για να βρείτε συγκεκριμένα έγγραφα, τότε σε μια τέτοια περίπτωση MongoDB θα χρειαστεί να σαρώσει ολόκληρη τη συλλογή για να βρει τα έγγραφα. Αλλά αν είχατε ευρετήρια, MongoDB θα χρησιμοποιούσε αυτά τα ευρετήρια για να περιορίσει τον αριθμό των εγγράφων που έπρεπε να αναζητηθούν στη συλλογή.
Τα ευρετήρια είναι ειδικά σύνολα δεδομένων που αποθηκεύουν ένα μερικό μέρος των δεδομένων της συλλογής. Δεδομένου ότι τα δεδομένα είναι μερικά, γίνεται ευκολότερη η ανάγνωσή τους. Αυτό το μερικό σύνολο αποθηκεύει την τιμή ενός συγκεκριμένου πεδίου ή ενός συνόλου πεδίων, ταξινομημένα με βάση την τιμή του πεδίου.
Κατανόηση του αντίκτυπου των δεικτών
Παρόλο που η εισαγωγή έδειξε ότι τα ευρετήρια είναι καλά για ερωτήματα, η ύπαρξη πάρα πολλών ευρετηρίων μπορεί να επιβραδύνει άλλες λειτουργίες, όπως οι λειτουργίες Εισαγωγής, Διαγραφής και Ενημέρωσης.
Εάν εκτελούνται συχνές λειτουργίες εισαγωγής, διαγραφής και ενημέρωσης σε έγγραφα, τότε τα ευρετήρια θα πρέπει να αλλάζουν συχνά, κάτι που θα αποτελούσε απλώς μια επιβάρυνση για τη συλλογή.
Το παρακάτω παράδειγμα δείχνει ποιες τιμές πεδίων θα μπορούσαν να αποτελέσουν ένα ευρετήριο σε μια συλλογή. Ένα ευρετήριο μπορεί είτε να βασίζεται σε ένα μόνο πεδίο στη συλλογή είτε σε πολλά πεδία στη συλλογή.
Στο παρακάτω παράδειγμα, το Employeeid “1” και το EmployeeCode Τα «AA» χρησιμοποιούνται για την ευρετηρίαση των εγγράφων στη συλλογή. Έτσι, όταν πραγματοποιείται αναζήτηση με βάση ένα ερώτημα, αυτά τα ευρετήρια θα χρησιμοποιηθούν για την γρήγορη και αποτελεσματική εύρεση των απαιτούμενων εγγράφων στη συλλογή.
Έτσι, ακόμη και αν το ερώτημα αναζήτησης βασίζεται στον ΥπάλληλοCode «AA», το έγγραφο αυτό θα επιστραφεί.
Πώς να δημιουργήσετε ευρετήρια: createIndex()
Δημιουργία ευρετηρίου σε MongoDB γίνεται με τη χρήση του δημιουργία Ευρετηρίου μέθοδος.
Το ακόλουθο παράδειγμα δείχνει πώς να προσθέσετε ένα ευρετήριο σε μια συλλογή. Ας υποθέσουμε ότι έχουμε την ίδια συλλογή Εργαζομένων, η οποία έχει τα ονόματα πεδίων "Employeeid" και "EmployeeName".
db.Employee.createIndex({Employeeid:1})
Code Επεξήγηση:
- The δημιουργία Ευρετηρίου Η μέθοδος χρησιμοποιείται για τη δημιουργία ενός ευρετηρίου με βάση το "Employeeid" του εγγράφου.
- Η παράμετρος «1» υποδεικνύει ότι όταν δημιουργείται το ευρετήριο με τις τιμές του πεδίου «Employeeid», αυτές θα πρέπει να ταξινομούνται κατά αύξουσα σειρά. Λάβετε υπόψη ότι αυτό διαφέρει από το πεδίο _id (το οποίο προσδιορίζει μοναδικά κάθε έγγραφο) που MongoDB δημιουργεί αυτόματα. Τα έγγραφα θα ταξινομούνται πλέον σύμφωνα με το πεδίο Employeeid και όχι σύμφωνα με το πεδίο _id.
Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί το ακόλουθο αποτέλεσμα:
Παραγωγή:
- Το numIndexesBefore: 1 υποδεικνύει τον αριθμό των τιμών πεδίων στα ευρετήρια πριν από την εκτέλεση της εντολής. Κάθε συλλογή έχει το πεδίο _id, το οποίο μετράει επίσης ως τιμή πεδίου, επομένως το numIndexesBefore είναι 1.
- Το numIndexesAfter: 2 υποδεικνύει τον αριθμό των τιμών πεδίων στα ευρετήρια μετά την εκτέλεση της εντολής.
- Η έξοδος "ok: 1" καθορίζει ότι η λειτουργία ήταν επιτυχής και το νέο ευρετήριο προστίθεται στη συλλογή.
Ο παραπάνω κώδικας δείχνει πώς να δημιουργήσετε ένα ευρετήριο με βάση μία τιμή πεδίου, αλλά μπορεί επίσης να δημιουργηθεί ένα ευρετήριο με βάση πολλαπλές τιμές πεδίων. Το ακόλουθο παράδειγμα δείχνει πώς μπορεί να γίνει αυτό:
db.Employee.createIndex({Employeeid:1, EmployeeName:1})
Η μέθοδος createIndex λαμβάνει πλέον υπόψη πολλαπλές τιμές πεδίων, οι οποίες θα προκαλέσουν τη δημιουργία του ευρετηρίου με βάση τα "Employeeid" και "EmployeeName". Τα Employeeid:1 και EmployeeName:1 υποδεικνύουν ότι το ευρετήριο θα πρέπει να δημιουργηθεί με βάση αυτές τις δύο τιμές πεδίων, με το :1 να υποδεικνύει αύξουσα σειρά. Αυτό είναι γνωστό ως σύνθετο ευρετήριο.
Πώς να βρείτε ευρετήρια: getIndexes()
Εύρεση ευρετηρίου σε MongoDB γίνεται με τη χρήση του getIndexes μέθοδος. Το ακόλουθο παράδειγμα δείχνει πώς μπορεί να γίνει αυτό:
db.Employee.getIndexes()
Η μέθοδος getIndexes χρησιμοποιείται για την εύρεση όλων των ευρετηρίων σε μια συλλογή.
Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί το ακόλουθο αποτέλεσμα:
Παραγωγή:
Η έξοδος επιστρέφει ένα έγγραφο που δείχνει ότι υπάρχουν δύο ευρετήρια στη συλλογή: το πεδίο _id και το πεδίο Employeeid. Το :1 υποδεικνύει ότι οι τιμές των πεδίων στο ευρετήριο δημιουργούνται σε αύξουσα σειρά.
Πώς να αποθέσετε ευρετήρια: dropIndex()
Αφαίρεση ενός ευρετηρίου σε MongoDB γίνεται με τη χρήση του dropIndex μέθοδος. Το ακόλουθο παράδειγμα δείχνει πώς μπορεί να γίνει αυτό:
db.Employee.dropIndex({Employeeid:1})
Η μέθοδος dropIndex λαμβάνει τις απαιτούμενες τιμές πεδίων οι οποίες πρέπει να αφαιρεθούν από το ευρετήριο.
Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί το ακόλουθο αποτέλεσμα:
Παραγωγή:
- Το nIndexesWas: 3 υποδεικνύει τον αριθμό των τιμών πεδίων στα ευρετήρια πριν από την εκτέλεση της εντολής. Κάθε συλλογή έχει το πεδίο _id, το οποίο μετράει επίσης ως τιμή πεδίου.
- Η έξοδος ok: 1 προσδιορίζει ότι η λειτουργία ήταν επιτυχής και το πεδίο "Employeeid" αφαιρείται από το ευρετήριο.
Για να καταργήσετε όλα τα ευρετήρια ταυτόχρονα στη συλλογή, μπορείτε να χρησιμοποιήσετε την εντολή dropIndexes. Το ακόλουθο παράδειγμα δείχνει πώς μπορεί να γίνει αυτό:
db.Employee.dropIndexes()
Η μέθοδος dropIndexes θα απορρίψει όλα τα ευρετήρια εκτός από το ευρετήριο _id.
Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί το ακόλουθο αποτέλεσμα:
Παραγωγή:
- Το nIndexesWas: 2 υποδεικνύει τον αριθμό των τιμών πεδίων στα ευρετήρια πριν από την εκτέλεση της εντολής.
- Κάθε συλλογή έχει το πεδίο _id, το οποίο επίσης μετράει ως τιμή πεδίου και δεν θα αφαιρεθεί από MongoDB; αυτό υποδηλώνει αυτό το μήνυμα.
- Το ok: 1 έξοδος προσδιορίζει ότι η λειτουργία ήταν επιτυχής.










