保存现有对象时,save方法是否仅更新传递的字段?

时间:2012-04-20 03:36:41

标签: mongodb nosql

假设我将此对象保存在MongoDB中:

{ "hello" : "goodbye", "_id" : ObjectId("4f90c9106aee6e21b4e55c65"), "test" : "world" };

我做了

db.table.save({"_id" : ObjectId("4f90c9106aee6e21b4e55c65"), "test" : "changed value"});

它会更新现有记录吗? (测试的值将被“更改”,其余的将保持不变),或者创建一个新值?

谢谢!

1 个答案:

答案 0 :(得分:1)

是。如果您传递_id并使用“save”,它将更新它。

> db.test.insert({ "hello" : "goodbye", "_id" : ObjectId("4f90c9106aee6e21b4e55c65"), "test" : "world" });
> db.test.save({"_id" : ObjectId("4f90c9106aee6e21b4e55c65"), "test" : "changed value"});
> db.test.find();
{ "_id" : ObjectId("4f90c9106aee6e21b4e55c65"), "test" : "changed value" }

抱歉,错过了你问题的第二部分。你正在寻找这个:

db.test.update({_id: ObjectId("4f90c9106aee6e21b4e55c65")}, {$set:{test:"changed value"}});