Wie beim Aktualisieren des vorhandenen Sammlungsfelds $setwerden neue Felder hinzugefügt, wenn das angegebene Feld nicht vorhanden ist.
Schauen Sie sich dieses Beispiel an:
> 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" }
BEARBEITEN:
Wenn Sie Ihrer gesamten Sammlung ein neues_Feld hinzufügen möchten, müssen Sie den leeren Selektor verwenden und das Multi-Flag auf true (letzter Parameter) setzen, um alle Dokumente zu aktualisieren
db.your_collection.update(
{},
{ $set: {"new_field": 1} },
false,
true
)
BEARBEITEN:
Im obigen Beispiel geben die letzten beiden Felder false, truedie Flags upsertund an multi.
Upsert: Wenn auf true gesetzt, wird ein neues Dokument erstellt, wenn kein Dokument den Abfragekriterien entspricht.
Multi: Wenn auf true gesetzt, werden mehrere Dokumente aktualisiert, die die Abfragekriterien erfüllen. Wenn false festgelegt ist, wird ein Dokument aktualisiert.
Dies ist für Mongo versionsvor 2.2. Bei den neuesten Versionen wurde die Abfrage etwas geändert
db.your_collection.update({},
{$set : {"new_field":1}},
{upsert:false,
multi:true})