sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB - Opdater et dokument

Brug update() metode eller save() metode til at opdatere dokumenter i MongoDB.

I MongoDB er både update() metoden og save() metode kan bruges til at opdatere et dokument.

update() metode opdaterer værdier i et eksisterende dokument eller dokumenter, mens save() metoden erstatter et dokument med det dokument, der sendes ind som en parameter.

Men update() metode kan også erstatte hele dokumentet, afhængigt af den parameter, der er sendt ind.

update() Metode

Her er et eksempel på update() metode.

Lad os først vælge en post, der skal opdateres:

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

Resultat:

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

Jeff gør faktisk meget mere end bare at synge. Så lad os tilføje nogle flere instrumenter. Vi bruger $set operatør for at opdatere et enkelt felt.

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

Resultat:

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

Hvis vi nu laver en anden forespørgsel, ser vi, at dokumentet er blevet opdateret som specificeret:

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

Resultat:

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

Nogle flere muligheder:

  • Hvis feltet ikke eksisterer, er $set operatør vil tilføje et nyt felt med den angivne værdi, forudsat at det nye felt ikke overtræder en type begrænsning.
  • Du kan også bruge { upsert: true } at oprette et nyt dokument, når intet dokument matcher forespørgslen.
  • Du kan bruge { multi: true } at opdatere flere dokumenter, der opfylder forespørgselskriterierne. Som standard er denne indstilling indstillet til false , så kun ét dokument opdateres, hvis du ikke indstiller det til true .

save() Metode

save() metode er en krydsning mellem update() og insert() . Når du bruger save() metode, hvis dokumentet findes, vil det blive opdateret. Hvis det ikke findes, vil det blive oprettet.

Hvis du ikke angiver et _id feltet, vil MongoDB oprette et dokument med en _id der indeholder et ObjectId værdi (i henhold til en insert() ).

Hvis du angiver et _id felt, udfører den en opdatering med { upsert: true } , hvilket betyder, at det opretter et nyt dokument, hvis intet dokument matcher forespørgslen.

Vi har i øjeblikket ingen dokumenter i vores producenter kollektion. Lad os oprette en ved at bruge save() metode:

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

Resultat:

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

Hvis vi nu søger efter producenterne samling, ser vi vores nyoprettede rekord:

db.producers.find()

Resultat:

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

  1. Hvordan sorterer man i mangust?

  2. Hvad er $unwind-operatøren i MongoDB?

  3. Sådan kommer du i gang med ClusterControl

  4. Føj data til eksisterende gridfs-fil