MongoDB Update() Document with Example
\
⚡ Έξυπνη Σύνοψη
MongoDB Οι λειτουργίες εγγράφων Update() τροποποιούν υπάρχουσες εγγραφές σε μια συλλογή. Η μέθοδος update() δέχεται μια συνθήκη για την επιλογή εγγράφων και έναν τροποποιητή όπως $set για την αλλαγή τιμών πεδίων, και η επιλογή multi ενημερώνει πολλά αντίστοιχα έγγραφα ταυτόχρονα.

Βασικές ενημερώσεις εγγράφων
MongoDB παρέχει την εντολή update() για την ενημέρωση των εγγράφων μιας συλλογής. Για να ενημερώσετε μόνο τα έγγραφα που θέλετε να ενημερώσετε, μπορείτε να προσθέσετε ένα κριτήριο στη δήλωση ενημέρωσης, ώστε να ενημερώνονται μόνο επιλεγμένα έγγραφα.
Οι βασικές παράμετροι στην εντολή είναι μια συνθήκη για την οποία πρέπει να ενημερωθεί το έγγραφο και η επόμενη είναι η τροποποίηση που πρέπει να γίνει.
Το παρακάτω παράδειγμα δείχνει πώς μπορεί να γίνει αυτό.
Βήμα 1) Εκδώστε την εντολή ενημέρωσης
Βήμα 2) Επιλέξτε τη συνθήκη που θέλετε να χρησιμοποιήσετε για να αποφασίσετε ποιο έγγραφο πρέπει να ενημερωθεί. Στο παράδειγμά μας, θέλουμε να ενημερώσουμε το έγγραφο που έχει το Employee id 22.
Βήμα 3) Χρησιμοποιήστε την εντολή set για να τροποποιήσετε το όνομα πεδίου
Βήμα 4) Επιλέξτε το Όνομα Πεδίου που θέλετε να τροποποιήσετε και εισαγάγετε τη νέα τιμή ανάλογα.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος
Παραγωγή:
Η έξοδος δείχνει ξεκάθαρα ότι μία εγγραφή ταιριάζει με τη συνθήκη και ως εκ τούτου η σχετική τιμή πεδίου τροποποιήθηκε.
MongoDB Ενημέρωση Operaκορμοί
Ο τελεστής $set είναι ο πιο συνηθισμένος τρόπος για να αλλάξετε ένα πεδίο, αλλά MongoDB παρέχει αρκετούς τελεστές ενημέρωσης για διαφορετικές ανάγκες. Τους τοποθετείτε στο δεύτερο όρισμα της update() δίπλα ή αντί για $set:
- $set: Ορίζει την τιμή ενός πεδίου και το δημιουργεί εάν δεν υπάρχει.
- $unset: Αφαιρεί εντελώς ένα πεδίο από το έγγραφο.
- $inc: Αυξάνει ή μειώνει ένα αριθμητικό πεδίο κατά ένα δεδομένο ποσό.
- $mul: Πολλαπλασιάζει την τιμή ενός αριθμητικού πεδίου.
- $μετονομασία: Μετονομάζει ένα πεδίο σε ένα νέο όνομα.
- $push: Προσθέτει μια τιμή σε ένα πεδίο πίνακα.
- $pull: Αφαιρεί τις αντίστοιχες τιμές από ένα πεδίο πίνακα.
Κάθε τελεστής στοχεύει μόνο τα πεδία που ονομάζετε, αφήνοντας το υπόλοιπο έγγραφο αμετάβλητο. Μπορείτε να συνδυάσετε πολλούς τελεστές σε μία μόνο κλήση update() για να τροποποιήσετε πολλά πεδία ταυτόχρονα, κάτι που διατηρεί τις ενημερώσεις ακριβείς και αποφεύγει την αντικατάσταση δεδομένων που θέλετε να διατηρήσετε.
Ενημέρωση πολλαπλών τιμών
Για να διασφαλίσετε ότι πολλά/μαζικά έγγραφα ενημερώνονται ταυτόχρονα στο MongoDB πρέπει να χρησιμοποιήσετε την επιλογή πολλαπλών γιατί διαφορετικά από προεπιλογή μόνο ένα έγγραφο τροποποιείται κάθε φορά.
Το ακόλουθο παράδειγμα δείχνει πώς να ενημερώσετε πολλά έγγραφα.
Σε αυτό το παράδειγμα, θα βρούμε πρώτα το έγγραφο που έχει το Employee id ως "1" και θα αλλάξουμε το Employee name από "Martin" σε "NewMartin".
Βήμα 1) Εκδώστε την εντολή ενημέρωσης
Βήμα 2) Επιλέξτε τη συνθήκη που θέλετε να χρησιμοποιήσετε για να αποφασίσετε ποιο έγγραφο πρέπει να ενημερωθεί. Στο παράδειγμά μας, θέλουμε να ενημερωθεί το έγγραφο που έχει το Employee id του "1".
Βήμα 3) Επιλέξτε τα Όνομα Πεδίου που θέλετε να τροποποιήσετε και εισαγάγετε τη νέα τους τιμή ανάλογα.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Εάν η εντολή εκτελεστεί με επιτυχία και εάν εκτελέσετε το "εύρημα" εντολή για αναζήτηση του εγγράφου με το Employee id ως 22 θα δείτε ότι θα εμφανιστεί η ακόλουθη έξοδος
Παραγωγή:
Η έξοδος δείχνει ξεκάθαρα ότι μία εγγραφή ταιριάζει με τη συνθήκη και ως εκ τούτου η σχετική τιμή πεδίου τροποποιήθηκε.
Πώς να ανατρέψετε ένα έγγραφο σε MongoDB
Μια ενημέρωση είναι ένας συνδυασμός ενημέρωσης και εισαγωγής. Όταν την ενεργοποιήσετε, MongoDB ενημερώνει το έγγραφο που ταιριάζει με τη συνθήκη ή εισάγει ένα νέο έγγραφο εάν δεν βρεθεί καμία αντιστοιχία. Αυτό είναι χρήσιμο όταν δεν είστε σίγουροι εάν υπάρχει ήδη μια εγγραφή.
Για να εκτελέσετε μια εντολή upsert, προσθέστε την επιλογή upsert που έχει οριστεί σε true ως το τρίτο όρισμα της εντολής update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Να τι συμβαίνει:
- Εάν υπάρχει έγγραφο με αναγνωριστικό υπαλλήλου 5, MongoDB ενημερώνει το πεδίο Όνομα_Εργαζομένου.
- Εάν δεν υπάρχει τέτοιο έγγραφο, MongoDB εισάγει ένα νέο έγγραφο με EmployeeID 5 και EmployeeName "Sofiπρος την".
Τα Upserts είναι χρήσιμα για μετρητές, ρυθμίσεις και οποιαδήποτε ροή εργασίας όπου θέλετε να δημιουργήσετε μια εγγραφή κατά την πρώτη χρήση και να την ενημερώσετε αργότερα. Στη σύγχρονη MongoDB, η ίδια συμπεριφορά είναι διαθέσιμη μέσω των συναρτήσεων updateOne() και updateMany() περνώντας την {upsert: true} στις επιλογές. Να είστε προσεκτικοί με τη συνθήκη, επειδή ένα ευρύ φίλτρο σε συνδυασμό με την upsert μπορεί να δημιουργήσει μη αναμενόμενα έγγραφα.
updateOne() έναντι updateMany() έναντι replaceOne()
Η μέθοδος update() είναι πλέον μια εντολή legacy. Modern MongoDB Οι οδηγοί χωρίζουν τη συμπεριφορά του σε τρεις σαφέστερες μεθόδους. Ο παρακάτω πίνακας τις συγκρίνει:
| Μέθοδος | Τι κάνει | Έγγραφα που επηρεάζονται |
|---|---|---|
| updateOne() | Εφαρμόζει τελεστές ενημέρωσης στο πρώτο αντίστοιχο έγγραφο | Ένας |
| updateMany() | Εφαρμόζει τελεστές ενημέρωσης σε κάθε αντίστοιχο έγγραφο | Πολλές |
| αντικατάστασηΈνα() | Αντικαθιστά ολόκληρο το πρώτο έγγραφο που ταιριάζει με ένα νέο | Ένας |
Χρησιμοποιήστε την updateOne() για μία μόνο στοχευμένη αλλαγή, την updateMany() αντί για την παλιά επιλογή πολλαπλών επιλογών και την replaceOne() όταν θέλετε να ανταλλάξετε ένα ολόκληρο έγγραφο αντί να επεξεργαστείτε πεδία. Αυτές οι μέθοδοι επιστρέφουν ένα σαφές αποτέλεσμα που δείχνει πόσα έγγραφα αντιστοιχίστηκαν και πόσα τροποποιήθηκαν, γεγονός που τις καθιστά ασφαλέστερες και πιο εύκολες στον εντοπισμό σφαλμάτων από την update().


