更新Mongodb集合记录,而不保留不在新记录上的字段

时间:2014-03-12 23:01:13

标签: mongodb

Mongodb中有没有办法更新记录并删除更新版本中不存在的字段?

就像现有记录一样:

{
   "id": "helloworld",
   "icon": "globe",
   "title": "Hello World!",
}

使用此更新时,看起来它没有更新,因为它没有丢弃“icon”。

{
   "id": "helloworld",
   "title": "Hello World!",
}

我能想到的唯一选择是删除记录并重新插入或找出不存在的字段并使用$ unset。

我只想知道是否有更好的方法在Mongodb中做我想做的事。

1 个答案:

答案 0 :(得分:1)

如果更新文档只包含字段:值对(而不是使用$ set等更新运算符),则update方法也可以完全替换文档。

例如,

> db.world.insert( {
   "id": "helloworld",
   "icon": "globe",
   "title": "Hello World!",
  } )

> db.world.update( 
     { id: "helloworld" }, 
     { "id": "helloworld", title: "Hello World!" }
)

> db.world.find()
{ "_id" : ObjectId("5320e93b80b181227adb0e24"), 
   "id" : "helloworld",
   "title" : "Hello World!"
}

再举一个例子,你也可以看到

http://docs.mongodb.org/manual/reference/method/db.collection.update/#example-update-replace-fields

希望这有帮助