MongoDBには$inc
があります 値を特定の量だけインクリメントできるフィールド更新演算子。
正の値と負の値を使用できます(つまり、値をインクリメントまたはデクリメントします)。
フィールドがまだ存在しない場合は、指定された値で作成されます。
例
dogs
というコレクションがあるとします。 次のドキュメントで:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
ここでは、weight
フィールドには、インクリメントまたはデクリメントできる値が含まれています。
インクリメント
$inc
を使用できます update()
と組み合わせた演算子 この犬の体重を増やす方法。
このように:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
出力:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
これは、1つのドキュメントが一致して変更されたことを示しています。
コレクションをもう一度確認しましょう:
db.dogs.find()
結果:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
犬の体重が5増加したことがわかります。
デクリメント
$inc
に負の値を指定すると、値をデクリメントできます。 オペレーター。
このように:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
出力:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
コレクションを確認してください:
db.dogs.find()
結果:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
重量が5減少したことがわかります。
存在しないフィールドをインクリメントする
ドキュメントに存在しないフィールドをインクリメントすると、フィールドが追加され、指定された値が割り当てられます。
例:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
出力:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
2つのフィールドを更新したことに注意してください。 weight
フィールドとheight
フィールド(元々は存在しませんでした)。
ドキュメントをもう一度確認しましょう:
db.dogs.find()
結果:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
weight
フィールドは1
だけインクリメントされています 、および新しいheight
30
の指定値でフィールドが追加されました 。