2012-04-20 58 views
1

比方說,我有這樣的對象保存在MongoDB中:保存現有對象時,保存方法是否僅更新傳遞字段?

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

我做

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

它將更新現有記錄? (測試的價值將被「改變」,其餘將完好無損),或者創建一個新的?

謝謝!

回答

1

是的。如果您通過_id並使用「保存」,它將更新它。

> 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"}}); 
+0

但是,如果對象有20個字段,並且我傳遞_id和只有3個字段。它會更新這3個字段,並保持其餘字段完好無損嗎?或者它會讓它們變成空白?謝謝 – TomShreds 2012-04-20 03:45:02

+1

如果你像你在例子中那樣做,它會將它們留空。但是,有語法只更新3個字段而不刪除其餘部分。查看$ set在http://www.mongodb.org/display/DOCS/Updating#Updating-%24set – 2012-04-20 03:46:34

相關問題