MongoDB Update() Document with Example

\

⚡ Έξυπνη Σύνοψη

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

  • ️ Μέθοδος ενημέρωσης(): Η εντολή update() αλλάζει τα πεδία στα έγγραφα που ταιριάζουν με μια δεδομένη συνθήκη.
  • 🎯 Συνθήκη αντιστοίχισης: Το πρώτο όρισμα επιλέγει ποια έγγραφα θα ενημερωθούν, όπως {Employeeid:1}.
  • 🔧 $set Operaβραχώδης κορυφή: Ο τελεστής $set αντιστοιχίζει μια νέα τιμή σε ένα πεδίο χωρίς να αντικαταστήσει ολόκληρο το έγγραφο.
  • 📚 Ενημέρωση πολλών: Η επιλογή multi, ή updateMany(), τροποποιεί κάθε έγγραφο που ταιριάζει αντί για μόνο ένα.
  • ➕ Ανατροπή: Η επιλογή upsert εισάγει ένα νέο έγγραφο όταν κανένα υπάρχον έγγραφο δεν ταιριάζει με τη συνθήκη.
  • 🔄 Σύγχρονες μέθοδοι: Οι updateOne(), updateMany() και replaceOne() είναι οι τρέχουσες αντικαταστάσεις για την παρωχημένη update().

MongoDB Έγγραφο Update().

Βασικές ενημερώσεις εγγράφων

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().

Συχνές Ερωτήσεις

Χωρίς έναν τελεστή ενημέρωσης όπως $set, MongoDB αντικαθιστά ολόκληρο το αντιστοιχισμένο έγγραφο με το αντικείμενο που παρέχετε, διαγράφοντας τυχόν πεδία που δεν περιλαμβάνονται. Να χρησιμοποιείτε πάντα $set για να αλλάξετε συγκεκριμένα πεδία ενώ διατηρείτεping τα υπόλοιπα άθικτα.

Ναι. Εάν το πεδίο που ονομάζεται στο $set λείπει από το αντίστοιχο έγγραφο, MongoDB το προσθέτει με τη δεδομένη τιμή. Αυτό καθιστά το $set χρήσιμο τόσο για την ενημέρωση υπαρχόντων πεδίων όσο και για την προσθήκη νέων.

Χρησιμοποιήστε τη συνάρτηση findOneAndUpdate() με την επιλογή returnDocument ορισμένη σε 'after'. Εφαρμόζει την αλλαγή και επιστρέφει το τροποποιημένο έγγραφο σε μία ατομική λειτουργία, κάτι που είναι χρήσιμο όταν χρειάζεστε τις νέες τιμές αμέσως.

Η Τεχνητή Νοημοσύνη μπορεί να μετατρέψει ένα απλό αίτημα σε ενημέρωση ή εντολή updateMany με τη σωστή συνθήκη και τελεστή, όπως $set ή $inc, και να εξηγήσει κάθε μέρος, ώστε οι αρχάριοι να αποφεύγουν τα λάθη.

Ναι. Η Τεχνητή Νοημοσύνη μπορεί να επισημάνει μια ενημέρωση που παραλείπει το $set και θα αντικαθιστούσε ολόκληρα έγγραφα, να προειδοποιήσει όταν ένα φίλτρο ταιριάζει με τα πάντα και να προτείνει δοκιμή σε ένα αντίγραφο πριν από την εκτέλεσή του στην παραγωγή.

Συνοψίστε αυτήν την ανάρτηση με: