添加新字段到MongoDB中的集合
我无法find如何添加一个新的字段到现有的集合。
我知道如何更新现有集合的字段,但不知道如何在集合中添加新的不存在的字段。 另外,如何将新字段添加到所有集合的文档?
与更新现有集合字段相同,如果指定字段不存在, $ set将添加新字段。
查看样本
> 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" }
编辑:
如果你想添加一个new_field到你的所有集合,你必须使用空select器,并设置multi标志为true(最后一个参数)来更新所有的文档
db.your_collection.update({},{$ set:{“new_field”:1}},false,true)
编辑:
在上面的例子中,最后2个字段为false, true
指定了upsert
和multi
标志。
Upsert:如果设置为true,则在没有文档匹配查询条件时创build一个新文档。
多:如果设置为true,则更新符合查询条件的多个文档。 如果设置为false,则更新一个文档。
这是2.2
之前的Mongo versions
。 对于最新版本,查询有所改变
db.your_collection.update({}, {$set : {"new_field":1}}, {upsert:false, multi:true})