sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - Uppdatera ett dokument

Använd update() metod eller save() metod för att uppdatera dokument i MongoDB.

I MongoDB, både update() metoden och save() metod kan användas för att uppdatera ett dokument.

update() metod uppdaterar värden i ett eller flera befintliga dokument, medan save() metod ersätter ett dokument med dokumentet som skickas in som en parameter.

Men update() metoden kan också ersätta hela dokumentet, beroende på parametern som skickas in.

update() Metod

Här är ett exempel på update() metod.

Låt oss först välja en post att uppdatera:

db.musicians.find({ _id: 6 }).pretty()

Resultat:

{
	"_id" : 6,
	"name" : "Jeff Martin",
	"instrument" : "Vocals",
	"born" : 1969
}

Jeff gör faktiskt mycket mer än att bara sjunga. Så låt oss lägga till några fler instrument. Vi använder $set operatör för att uppdatera ett enda fält.

db.musicians.update(
        { _id: 6 }, 
        { $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } }
    )

Resultat:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Om vi ​​nu gör en annan fråga ser vi att dokumentet har uppdaterats som specificerat:

db.musicians.find({ _id: 6 }).pretty()

Resultat:

{
	"_id" : 6,
	"name" : "Jeff Martin",
	"instrument" : [
		"Vocals",
		"Guitar",
		"Sitar"
	],
	"born" : 1969
}

Några fler alternativ:

  • Om fältet inte finns, $set operatören lägger till ett nytt fält med det angivna värdet, förutsatt att det nya fältet inte bryter mot en typbegränsning.
  • Du kan också använda { upsert: true } för att skapa ett nytt dokument när inget dokument matchar frågan.
  • Du kan använda { multi: true } för att uppdatera flera dokument som uppfyller frågekriterierna. Som standard är det här alternativet satt till false , så bara ett dokument uppdateras om du inte ställer in det på true .

save() Metod

save() metod är en korsning mellan update() och insert() . När du använder save() metod, om dokumentet finns kommer det att uppdateras. Om det inte finns skapas det.

Om du inte anger ett _id kommer MongoDB att skapa ett dokument med ett _id som innehåller ett ObjectId värde (enligt en insert() ).

Om du anger ett _id fältet utför den en uppdatering med { upsert: true } , vilket innebär att det skapar ett nytt dokument om inget dokument matchar frågan.

Vi har för närvarande inga dokument hos våra producenter samling. Låt oss skapa en med save() metod:

db.producers.save({ _id: 1, name: "Bob Rock" })

Resultat:

WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })

Om vi ​​nu söker efter producenterna samling ser vi vår nyskapade post:

db.producers.find()

Resultat:

{ "_id" : 1, "name" : "Bob Rock" }

  1. Max och min i mongodb

  2. Importera data till dina nyskapade MongoDB-instanser

  3. Hur hanterar ConnectionMultiplexer frånkopplingar?

  4. Konvertera DBObject till en POJO med MongoDB Java Driver