MongoDB Update() Document met voorbeeld

\

⚡ Slimme samenvatting

MongoDB De `update()`-methode wijzigt bestaande records in een verzameling. De `update()`-methode accepteert een voorwaarde om documenten te selecteren en een modifier zoals `$set` om veldwaarden te wijzigen. De optie `multi` werkt meerdere overeenkomende documenten tegelijk bij.

  • ​ update()-methode: De update()-opdracht wijzigt velden in documenten die aan een bepaalde voorwaarde voldoen.
  • 🎯 Wedstrijdconditie: Het eerste argument selecteert welke documenten moeten worden bijgewerkt, bijvoorbeeld {Employeeid:1}.
  • 🔧 $ingesteld Operavoor: De operator $set kent een nieuwe waarde toe aan een veld zonder het hele document te vervangen.
  • 📚 Update Veel: De multi-optie, oftewel updateMany(), wijzigt elk document dat overeenkomt in plaats van slechts één.
  • ➕ Invoegen: De upsert-optie voegt een nieuw document in wanneer geen enkel bestaand document aan de voorwaarde voldoet.
  • 🔄 Moderne methoden: updateOne(), updateMany() en replaceOne() zijn de huidige vervangingen voor de verouderde update().

MongoDB Update()-document

Basisdocumentupdates

MongoDB biedt de opdracht update() om de documenten van een verzameling bij te werken. Om alleen de documenten bij te werken die u wilt bijwerken, kunt u een criterium aan de update-instructie toevoegen, zodat alleen geselecteerde documenten worden bijgewerkt.

De basisparameters in de opdracht zijn een voorwaarde waarvoor het document moet worden bijgewerkt, en de volgende is de wijziging die moet worden uitgevoerd.

Het volgende voorbeeld laat zien hoe dit gedaan kan worden.

Stap 1) Geef de update-opdracht

Stap 2) Kies de voorwaarde die u wilt gebruiken om te beslissen welk document moet worden bijgewerkt. In ons voorbeeld willen we het document bijwerken dat de Werknemer-id 22 heeft.

Stap 3) Gebruik de opdracht set om de veldnaam te wijzigen

Stap 4) Kies welke veldnaam u wilt wijzigen en voer de nieuwe waarde dienovereenkomstig in.

db.Employee.update(
{"Employeeid" : 1},
{$set: { "EmployeeName" : "NewMartin"}});

Als de opdracht succesvol is uitgevoerd, wordt de volgende uitvoer weergegeven

Output:

Basisdocumentupdates

Uit de uitvoer blijkt duidelijk dat één record aan de voorwaarde voldeed en dat daarom de relevante veldwaarde is gewijzigd.

MongoDB bijwerken Operaverdraaid

De `$set`-operator is de meest gebruikelijke manier om een ​​veld te wijzigen, maar MongoDB biedt verschillende update-operators voor verschillende doeleinden. Je plaatst ze in het tweede argument van update() naast of in plaats van $set:

  • $set: Stelt de waarde van een veld in en maakt het veld aan als het niet bestaat.
  • $uitgezet: Verwijdert een veld volledig uit het document.
  • $inc: Verhoogt of verlaagt een numeriek veld met een bepaald bedrag.
  • $mul: Vermenigvuldigt de waarde van een numeriek veld.
  • $rename: Hiermee wordt een veld een nieuwe naam gegeven.
  • $push: Voegt een waarde toe aan een arrayveld.
  • $trekken: Verwijdert overeenkomende waarden uit een arrayveld.

Elke operator is alleen gericht op de velden die u benoemt, waardoor de rest van het document ongewijzigd blijft. U kunt meerdere operators combineren in één update()-aanroep om meerdere velden tegelijk te wijzigen. Dit zorgt voor nauwkeurige updates en voorkomt dat gegevens die u wilt behouden, worden overschreven.

Meerdere waarden bijwerken

Om ervoor te zorgen dat meerdere/bulkdocumenten tegelijkertijd worden bijgewerkt in MongoDB U moet de optie multi gebruiken, omdat anders standaard slechts één document tegelijk wordt gewijzigd.

Het volgende voorbeeld laat zien hoe u meerdere documenten kunt bijwerken.

In dit voorbeeld gaan we eerst het document zoeken met de werknemers-ID als “1” en de werknemersnaam wijzigen van “Martin” in “NewMartin”

Stap 1) Geef de update-opdracht

Stap 2) Kies de voorwaarde die u wilt gebruiken om te beslissen welk document moet worden bijgewerkt. In ons voorbeeld willen we dat het document met de werknemers-id “1” wordt bijgewerkt.

Stap 3) Kies welke veldnamen u wilt wijzigen en voer overeenkomstig de nieuwe waarde ervan in.

db.Employee.update
(
	{
		Employeeid : 1
	},
	{
		$set :
		{
			"EmployeeName" : "NewMartin",
			"Employeeid" : 22
		}
	}
)

Als de opdracht met succes wordt uitgevoerd en als u de "Vind" opdracht om te zoeken naar het document met werknemers-id als 22, dan ziet u de volgende uitvoer verschijnen

Output:

Meerdere waarden bijwerken

Uit de uitvoer blijkt duidelijk dat één record aan de voorwaarde voldeed en dat daarom de relevante veldwaarde is gewijzigd.

Hoe voeg je een document in (Upsert)? MongoDB

Een upsert is een combinatie van een update en een insert. Wanneer je deze functie inschakelt, MongoDB Werkt het document bij dat aan de voorwaarde voldoet, of voegt een nieuw document in als er geen overeenkomst wordt gevonden. Dit is handig wanneer u niet zeker weet of een record al bestaat.

Om een ​​upsert uit te voeren, voegt u de upsert-optie, ingesteld op true, toe als derde argument van update():

db.Employee.update(
  {Employeeid: 5},
  {$set: {EmployeeName: "Sofia"}},
  {upsert: true}
)

Dit is wat er gebeurt:

  • Als er een document met werknemers-ID 5 bestaat, MongoDB Het veld EmployeeName wordt bijgewerkt.
  • Als een dergelijk document niet bestaat, MongoDB Voegt een nieuw document in met Employeeid 5 en EmployeeName.Sofieen "

Upserts zijn handig voor tellers, instellingen en elke workflow waarbij u een record wilt aanmaken bij het eerste gebruik en dit daarna wilt bijwerken. In moderne MongoDBHetzelfde gedrag is beschikbaar via updateOne() en updateMany() door {upsert: true} in de opties mee te geven. Wees voorzichtig met de voorwaarde, want een breed filter in combinatie met upsert kan onverwachte documenten opleveren.

updateOne() versus updateMany() versus replaceOne()

De update()-methode is nu een verouderde opdracht. Modern MongoDB Bestuurders verdelen het gedrag in drie duidelijkere methoden. De onderstaande tabel vergelijkt ze:

Methode Wat het doet Betreffende documenten
updateEen() Past update-operators toe op het eerste overeenkomende document. One
updateVeel() Past update-operators toe op elk overeenkomend document. Veel
replaceOne() Vervangt het volledige eerste overeenkomende document door een nieuw document. One

Gebruik updateOne() voor een enkele gerichte wijziging, updateMany() in plaats van de oude multi-optie en replaceOne() wanneer u een volledig document wilt vervangen in plaats van alleen velden te bewerken. Deze methoden geven een duidelijk resultaat terug dat laat zien hoeveel documenten overeenkomen en hoeveel er zijn gewijzigd, waardoor ze veiliger en gemakkelijker te debuggen zijn dan update().

Veelgestelde vragen

Zonder een update-operator zoals $set, MongoDB Vervangt het volledige overeenkomende document door het object dat u opgeeft, waarbij alle velden die niet zijn opgenomen, worden verwijderd. Gebruik altijd `$set` om specifieke velden te wijzigen, terwijl u het document behoudt.ping De rest is intact gebleven.

Ja. Als het veld dat in $set wordt genoemd, ontbreekt in het overeenkomende document, MongoDB Voegt het toe met de opgegeven waarde. Dit maakt $set nuttig voor zowel het bijwerken van bestaande velden als het toevoegen van nieuwe velden.

Gebruik findOneAndUpdate() met de optie returnDocument ingesteld op 'after'. Hiermee wordt de wijziging toegepast en het aangepaste document in één atomaire bewerking geretourneerd, wat handig is wanneer u de nieuwe waarden direct nodig hebt.

AI kan een eenvoudig verzoek omzetten in een update- of updateMany-opdracht met de juiste voorwaarde en operator, zoals $set of $inc, en elk onderdeel uitleggen zodat beginners fouten kunnen voorkomen.

Ja. AI kan een update signaleren die $set weglaat en hele documenten zou vervangen, waarschuwen wanneer een filter op alles overeenkomt en voorstellen om te testen op een kopie voordat deze in productie wordt genomen.

Vat dit bericht samen met: