私のアップサートリクエストでは、次の両方を行いたいと思います。
オブジェクトが存在する場合は、その場所でオブジェクトを更新します。
db.somecollection.update({x: 1}, {$inc: {x: 1}});
そこにない場合は、新しいオブジェクトを提供します。
db.somecollection.update({x: 1}, {whole: 0, new: 'yata', object: 42});
それを行う方法はありますか?
問題は、アップサートは、修飾子ではなく、最初にオブジェクトをすでに提供している場合にのみ機能するように見えることです。
編集:より具体的にします。
フォームのオブジェクトを更新したい
{_id: 12, a: 123, b: 234, c: 345}
a
私の更新は、、b
またはのいずれかで1の増分ですc
。オブジェクトがベースにない場合は、フォームのオブジェクトを作成したいと思います
{_id: 13, a: 1, b: 0, c: 0}
a
インクリメントしようとしたフィールドがあれば。
さて、マニュアルを正しく読めば、書くことができます
db.somecollection.update({_id: 12}, {$inc: {a: 1}}, true);
これは私のフィールドを更新するためにうまく機能しa
ますが、フィールドb
を作成c
せず、オブジェクトが存在しない場合。