Mongodbフィールドの更新$ setOnInsert演算子
Mongodb Field Update Setoninsert Operator
1.定義
updateのupdateパラメータがupsert:trueの場合、つまり、更新するドキュメントが存在しない場合は、新しいレコードが挿入されます。 $ setOnInsert演算子は、指定された値を指定されたフィールドに割り当てます。更新するドキュメントが存在する場合、$ setOnInsertオペレーターは処理を行いません。
upsertパラメーターはdb.collection.update()およびdb.collection.findAndModify()メソッドで指定できます。
db.collection.update( , { $setOnInsert: { : , ... } }, { upsert: true } )
ドットを使用して、埋め込まれたドキュメントまたは配列のフィールドを指定します
2.次の製品コレクションドキュメントはupsert:trueパラメーターを使用します。
db.products.update( { _id: 1 }, { $set: { item: 'apple' }, $setOnInsert: { defaultQty: 100 } }, { upsert: true } )
指定されたコレクションドキュメントが存在しない場合、1の_idが作成され、他の値は$ set演算子と$ setOnInsert演算子によって指定されたフィールドと値です。
新しいコレクションドキュメントは次のとおりです。
{ '_id' : 1, 'item' : 'apple', 'defaultQty' : 100 }
指定されたコレクションドキュメントがdb.collection.update()およびupsert:trueで見つかった場合、Mongodbは$ setOnInsert値で指定された値を無視して、$ set演算子で指定された値を更新します。