MongoDB 更新ドキュメント
MongoDB は、update() メソッドと save() メソッドを使用して、コレクション内のドキュメントを更新します。次に、2 つの機能の用途とその違いを詳しく見てみましょう。
update() メソッド
update() メソッドは、既存のドキュメントを更新するために使用されます。構文形式は次のとおりです。
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )
パラメーターの説明:
query : SQL 更新クエリの背後にある場所と同様の更新クエリ条件。
update : オブジェクトの更新と一部の更新演算子 ($、$inc... など) などは、SQL 更新クエリで設定した後、
upsert として理解することもできます: オプション, このパラメータは、更新レコードがない場合に objNew を挿入するかどうかを意味します。true は挿入を意味し、デフォルトは false で挿入しません。
multi : オプション。mongodb のデフォルト値は false で、最初に見つかったレコードのみが更新されます。このパラメーターが true の場合、条件に従って見つかった複数のレコードがすべて更新されます。
writeConcern : オプション、例外がスローされるレベル。
例
次のデータをコレクションcolに挿入します:
>db.col.insert({ title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: 'php中文网', url: 'http://www.php.cn', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
その後、update()メソッドを通じてタイトル(title)を更新します:
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息 > db.col.find().pretty() { "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "php中文网", "url" : "http://www.php.cn", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } >
タイトル(title)がから変更されていることがわかります。オリジナルの「MongoDB チュートリアル」を「MongoDB」に更新しました。
上記のステートメントは、最初に検出されたドキュメントのみを変更します。複数の同一のドキュメントを変更したい場合は、multi パラメーターを true に設定する必要があります。
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
save() メソッド
save() メソッドは、既存のドキュメントを受信ドキュメントで置き換えます。構文形式は次のとおりです。
db.collection.save( <document>, { writeConcern: <document> } )
パラメーターの説明:
document : 文書データ。
writeConcern : オプション、例外がスローされるレベル。
例
次の例では、ドキュメント データを _id 56064f89ade2f21f36b03136 で置き換えました。
>db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "php", "url" : "http://www.php.cn", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 })
置換が成功すると、find() コマンドを使用して置き換えられたデータを表示できます
>db.col.find().pretty() { "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "php", "url" : "http://www.php.cn", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 } >
その他の例
最初のレコードのみを更新します:
すべて更新 :
最初のバーのみ追加:
すべて追加 入る:
すべての更新:
最初のレコードのみを更新します: