$inc
定義
$inc
$inc
演算子は、指定された値だけフィールドを増加します。
互換性
次の環境でホストされる配置には $inc
を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
$inc
演算子は次の形式をとります。
{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
<field>
を埋め込みドキュメントまたは配列で指定するには、ドット表記を使用します。
動作
MongoDB 5.0 以降、更新演算子では名前が文字列ベースのドキュメントフィールドを辞書順に処理します。数値名のフィールドは、数値順に処理されます。詳細については、「更新演算子の動作」を参照してください。
$inc
演算子は正の値と負の値を受け入れます。
フィールドが存在しない場合、$inc
フィールドを作成し、指定された値にフィールドを設定します。
null 値を持つフィールドで $inc
演算子を使用すると、エラーが発生します。
$inc
は、1 つのドキュメント内のアトミック操作です。
MongoDB 5.0 以降、$inc
などの更新演算子を空のオペランド式({ }
)と併用しても、mongod
でエラーが発生しなくなりました。空の更新を使用すると変更は一切されず、oplog エントリも作成されません(操作は実行されません)。
例
products
コレクションを次のように作成します。
db.products.insertOne( { _id: 1, sku: "abc123", quantity: 10, metrics: { orders: 2, ratings: 3.5 } } )
次のupdateOne()
操作では、 $inc
演算子を使用して次のようにします。
"metrics.orders"
フィールドを 1 増やしますquantity
フィールドを -2 増やします(つまりquantity
を減らします)
db.products.updateOne( { sku: "abc123" }, { $inc: { quantity: -2, "metrics.orders": 1 } } )
更新されたドキュメントは次のようになります。
{ _id: 1, sku: 'abc123', quantity: 8, metrics: { orders: 3, ratings: 3.5 } }