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演算子で指定された値を更新します。