「MongoDBの手引き」第2章-更新演算子
更新時には$set以外にも様々な演算子を使うことができる。
$inc更新演算子
値をインクリメントする。
[例]
条件に一致したdocumentの、
vampiresの値を-2インクリメントする。
db.unicorns.update({name: 'Horny'},
{$inc: {vampires: -2}})
インクリメントという言葉からは「1増やす」ことを想像するが、
「増加させる」という意味。
マイナス値を指定すれば減算の意味になる。
$push更新演算子
配列に値を追加する。
[例]
条件に一致したdocumentの、
loves配列にsugarを追加する。
db.unicorns.update({name: 'Aurora'},
{$push: {loves: 'sugar'}})
その他の更新演算子
その他の更新演算子を公式サイトのリファレンスからピックアップする。
[フィールド更新系の演算子]
$min:既存の値よりも小さければ更新する。
$max:既存の値よりも大きければ更新する。
$mul:既存の値に対し乗算する。
$rename:フィールド名を変更する。
$setOnInsert:documentがINSERTされる場合のみセットされる。
※ updateにupsert:trueを指定して「あれば更新、なければ登録」の処理ができる。
$setOnInsertはその場合に指定できる。
[配列更新系の演算子]
$:該当する要素の最初の要素を表す。
$[]:配列内の要素全てを表す。
$pull:配列から要素を取り除く。
$pop:配列の先頭または最後の要素を取り除く。
$addToSet:同じ値の要素が既に存在しない場合に追加する。
$each:複数の値を追加する。$pushまたは$addToSetと組み合わせて使う。
https://docs.mongodb.com/manual/reference/operator/update/#update-operators