2012-04-20 3 views
1

のは、私はMongoDBの中に保存されたこのオブジェクトがあるとしましょう:既存のオブジェクトを保存するときに、保存メソッドは渡されたフィールドのみを更新しますか?

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

を私は

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

を行うには、既存のレコードを更新しますか? (テストの値は「変更」され、残りは元のままになります)、または新しいテストを作成しますか?

ありがとうございます!

答えて

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

しかし、オブジェクトに20個のフィールドがあり、_idフィールドと3個のフィールドしか渡していない場合は、これを探しています。これらの3つのフィールドを更新し、残りのフィールドをそのまま残しますか?それともそれらを空白にしますか?ありがとう – TomShreds

+1

あなたがあなたの例のようにそれをするなら、それは空白になります。ただし、残りの部分を削除せずに3つのフィールドのみを更新する構文があります。 http://www.mongodb.org/display/DOCS/Updating#Updating-%24setで$をチェックしてください –

関連する問題