$inc (加算)
最終更新:2026-10-09
$inc (加算)
$inc は、数値フィールドを指定した量だけ増加(または減少)させます。フィールドが存在しない場合は、増分値を入れて作成します。`{ $inc: { views: 1 } }` は views を 1 増やし、`{ $inc: { stock: -5 } }` は 5 減らします。アトミックに実行されるため、カウンターや閲覧数の管理に最適で、読み取り・更新・書き込みの競合を避けられます。
| カテゴリ | フィールド更新 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $inc: { <field>: <amount> } }
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $inc: views を +1、stock を -5
db.articles.updateOne(
{ _id: 1 },
{ $inc: { views: 1 } }
)
db.products.updateOne(
{ _id: 2 },
{ $inc: { stock: -5 } }
)
出力:
// フィールドが存在しない場合:views は 1 で作成され、stock は 5 減る
📌 注意事項
- 数値型のみサポート。数値以外のフィールドに $inc を使うとエラーになる
- 増分値が 0 でも、フィールドが存在しなければ作成される
- $inc はアトミック。find してから update する手順は不要
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$inc は文字列に使えますか?
Aいいえ。$inc は数値型のみ受け付け、文字列に使うとエラーになります。文字列連結には $concat(集計)を使うか、読み取ってから書き込む方式にします。
Q$inc が存在しないフィールドを対象にするとどうなりますか?
Aフィールドが存在しない場合、$inc は初期値を 0 とみなし、増分値を入れてフィールドを作成します。フィールドは数値である必要があり、そうでなければエラーになります。
Q$inc で減算はできますか?
Aはい、負の値を渡します。例: { $inc: { score: -5 } } は score を 5 減らします。$inc はアトミックなので、並行アクセス下のカウンターやランキング管理に最適です。