sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Een document bijwerken

Gebruik de update() methode of save() methode om documenten in MongoDB bij te werken.

In MongoDB zijn zowel de update() methode en de save() methode kan worden gebruikt om een ​​document bij te werken.

De update() methode werkt waarden bij in een bestaand document of bestaande documenten, terwijl de save() methode vervangt een document met het document dat als parameter is doorgegeven.

Echter, de update() methode kan ook het hele document vervangen, afhankelijk van de parameter die is doorgegeven.

De update() Methode

Hier is een voorbeeld van de update() methode.

Laten we eerst een record selecteren om bij te werken:

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

Resultaat:

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

Jeff doet eigenlijk veel meer dan alleen zingen. Dus laten we wat meer instrumenten toevoegen. We gebruiken de $set operator om een ​​enkel veld bij te werken.

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

Resultaat:

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

Als we nu nog een query uitvoeren, zien we dat het document is bijgewerkt zoals gespecificeerd:

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

Resultaat:

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

Nog wat opties:

  • Als het veld niet bestaat, wordt de $set operator voegt een nieuw veld toe met de opgegeven waarde, op voorwaarde dat het nieuwe veld geen typebeperking schendt.
  • Je kunt ook { upsert: true } . gebruiken om een ​​nieuw document te maken wanneer geen enkel document overeenkomt met de zoekopdracht.
  • U kunt { multi: true } . gebruiken om meerdere documenten bij te werken die voldoen aan de zoekcriteria. Standaard is deze optie ingesteld op false , dus er wordt maar één document bijgewerkt als u het niet instelt op true .

De save() Methode

De save() methode is een kruising tussen update() en insert() . Wanneer u de save() . gebruikt methode, als het document bestaat, wordt het geüpdatet. Als het niet bestaat, wordt het gemaakt.

Als u geen _id . opgeeft veld, zal MongoDB een document maken met een _id die een ObjectId . bevat waarde (volgens een insert() ).

Als u een _id . opgeeft veld, voert het een update uit met { upsert: true } , wat betekent dat er een nieuw document wordt gemaakt als er geen document overeenkomt met de zoekopdracht.

We hebben momenteel geen documenten in onze producenten verzameling. Laten we er een maken met de save() methode:

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

Resultaat:

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

Als we nu zoeken naar de producenten collectie, zien we ons nieuw gemaakte record:

db.producers.find()

Resultaat:

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

  1. Met back-upcodering voor MySQL, MongoDB en PostgreSQL - ClusterControl 1.5.1

  2. Node.js multi-server cluster:hoe een object te delen in meerdere nodes cluster

  3. Omgekeerde paginering via een opnieuw gesorteerde set

  4. CouchDB-stijlsynchronisatie en conflictoplossing op Postgres met Hasura