このタイプの操作では、 $ addToSet コード>
もちろん、 $ inc
配列に何かが追加されたかどうか(「set」)に関係なく発生します。
代わりに、 $ ne
を使用してアレイをテストしてください。
クエリの演算子:
db.collection.update(
{ "unique_array": { "$ne": 18 } }, <-- existing element
{
"$push": { "unique_array": 18 },
"$inc": { "size_of_array": 1 }
}
)
配列メンバーの削除についても同じことが言えますが、もちろん今回は同等の存在をテストします:
db.collection.update(
{ "unique_array": 18 }, <-- existing element
{
"$pull": { "unique_array": 18 },
"$inc": { "size_of_array": -1 }
}
)
クエリ条件が一致する必要があるため、追加時に配列要素がすでに存在していた場合、一致はなく、 $ push
または$inc
操作が実行されます。また、 $ pull
についても同じことが言えます。
要素が配列に存在しない場合。