sql >> Database >  >> NoSQL >> MongoDB

Voeg een nieuw veld toe aan elk document in een MongoDB-verzameling

Hetzelfde als het bijwerken van het bestaande verzamelingsveld, $set zal een nieuw veld toevoegen als het opgegeven veld niet bestaat.

Bekijk dit voorbeeld:

> db.foo.find()
> db.foo.insert({"test":"a"})
> db.foo.find()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
> item = db.foo.findOne()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
> db.foo.update({"_id" :ObjectId("4e93037bbf6f1dd3a0a9541a") },{$set : {"new_field":1}})
> db.foo.find()
{ "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "new_field" : 1, "test" : "a" }

BEWERKEN:

Als u een new_field aan uw hele verzameling wilt toevoegen, moet u de lege selector gebruiken en multi-vlag op true (laatste parameter) zetten om alle documenten bij te werken

db.your_collection.update(
  {},
  { $set: {"new_field": 1} },
  false,
  true
)

BEWERKEN:

In het bovenstaande voorbeeld laatste 2 velden false, true specificeert de upsert en multi vlaggen.

Upsert: Indien ingesteld op true, wordt er een nieuw document gemaakt wanneer geen enkel document voldoet aan de querycriteria.

Meerdere: Indien ingesteld op true, worden meerdere documenten bijgewerkt die voldoen aan de querycriteria. Indien ingesteld op false, wordt één document bijgewerkt.

Dit is voor Mongo versions vóór 2.2 . Voor de nieuwste versies is de zoekopdracht een beetje gewijzigd

db.your_collection.update({},
                          {$set : {"new_field":1}},
                          {upsert:false,
                          multi:true}) 


  1. Bulksleutels maken in Redis - ServiceStack C#

  2. MongoDB vinden()

  3. Hoe een exemplaar van een item in een array in MongoDB te trekken?

  4. Een MongoDB-replicaset converteren naar een stand-alone server