Mongodb 保存现有对象时,save方法是否仅更新passed字段?

Mongodb 保存现有对象时,save方法是否仅更新passed字段?,mongodb,nosql,Mongodb,Nosql,假设我在MongoDB中保存了这个对象: { "hello" : "goodbye", "_id" : ObjectId("4f90c9106aee6e21b4e55c65"), "test" : "world" }; 我也是 db.table.save({"_id" : ObjectId("4f90c9106aee6e21b4e55c65"), "test" : "changed value"}); 它会更新现有记录吗?(测试的值将被“更改”,其余值将保持不变),还是创建一个新值 谢谢 是

假设我在MongoDB中保存了这个对象:

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

db.table.save({"_id" : ObjectId("4f90c9106aee6e21b4e55c65"), "test" : "changed value"});
它会更新现有记录吗?(测试的值将被“更改”,其余值将保持不变),还是创建一个新值


谢谢

是的。如果您传递_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"}});

对。如果您传递_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"}});

但是如果对象有20个字段,我只传递_id和3个字段。它会更新这3个字段,并保持其余字段不变吗?或者它会让他们空白?如果你像你的例子中那样做,ThanksIt会将它们清空。但是,有语法只更新3个字段而不删除其余字段。检查$set at,但是如果对象有20个字段,我只传递_id和3个字段。它会更新这3个字段,并保持其余字段不变吗?或者它会让他们空白?如果你像你的例子中那样做,ThanksIt会将它们清空。但是,有语法只更新3个字段而不删除其余字段。查看$set在