sql >> Databáze >  >> NoSQL >> MongoDB

Přidejte nové pole do každého dokumentu v kolekci MongoDB

Stejné jako aktualizace existujícího pole kolekce, $set přidá nová pole, pokud zadané pole neexistuje.

Podívejte se na tento příklad:

> 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" }

UPRAVIT:

V případě, že chcete přidat nové_pole do celé své sbírky, musíte pro aktualizaci všech dokumentů použít prázdný selektor a nastavit multi flag na true (poslední parametr).

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

UPRAVIT:

Ve výše uvedeném příkladu poslední 2 pole false, true určuje upsert a multi vlajky.

Nahoře: Pokud je nastaveno na hodnotu true, vytvoří se nový dokument, když žádný dokument neodpovídá kritériím dotazu.

Více: Pokud je nastaveno na hodnotu true, aktualizuje více dokumentů, které splňují kritéria dotazu. Pokud je nastaveno na hodnotu false, aktualizuje jeden dokument.

Toto je pro Mongo versions před 2.2 . U nejnovějších verzí je dotaz trochu změněn

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


  1. zpracování změn jmenného prostoru během deserializace JSON String

  2. MongoDB:Jak definovat schéma?

  3. Jak automaticky zapojit RedisTemplate<String,Long>

  4. Jak formátovat čísla v SQL