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の指定値でフィールドが追加されました 。