サーチ…


構文

  • {$ set:{<field1>:<value1>、<field2>:<value2>、...}}

パラメーター

パラメーター意味
フィールド名 フィールドが更新されます:{ name : 'Tom'}
targetVaule 値はフィールドに割り当てられます:{name: 'Tom' }

備考

$ set演算子のリファレンス: 公式サイトの$ set

ドキュメント内の指定されたフィールドを更新する$ set演算子

I.概要

MongoDBとRDBMSの大きな違いは、MongoDBには多くの種類の演算子があることです。そのうちの1つは、更新ステートメントで使用される更新演算子です。

II。更新演算子を使用しないとどうなりますか?

学生情報を保存する学生コレクションがあるとします(テーブルビュー): ここに画像の説明を入力

ある日、トムのジェンダーを「M」から「F」に変更する必要のある仕事があります。それは簡単ですね。したがって、RDBMSの経験に基づいて非常に迅速に以下の文を書くことができます:

db.student.update(
    {name: 'Tom'}, // query criteria
    {sex: 'F'} // update action
);

結果は何かを見てみましょう: ここに画像の説明を入力

私たちはトムの年齢と名前を失った!この例から、更新ステートメント内の更新演算子なければ、 ドキュメント全体がオーバーライドされることがわかります 。これはMongoDBのデフォルトの動作です。

III。$集合演算子

Tomの文書で 'sex'フィールドだけを変更したい場合は、 $setを使用して更新したいフィールドを指定できます:

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F'}} // update action
);

$setの値はオブジェクトであり、フィールドはドキュメントで更新するフィールドを表し、これらのフィールドの値はターゲット値です。

だから、結果は正しい今: ここに画像の説明を入力

また、 'sex'と 'age'の両方を同時に変更したい場合は、 $set追加することができます:

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F', age: 40}} // update action
);


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow