MongoDB-এ নির্দিষ্ট ডকুমেন্টের একটি নমেরিক ফিল্ডের মান কমাতে (ডিক্রিমেন্ট) $inc অপারেটর নেগেটিভ ভ্যালু দিয়ে ব্যবহার করা হয়। শর্তও লাগানো যায়।
নমুনা ডেটা তৈরি করা
decrementingOperationDemo কালেকশনে চারটি প্রোডাক্ট ডকুমেন্ট ইনসার্ট করি।
> db.decrementingOperationDemo.insertOne({"ProductName":"Product-1","ProductPrice":756});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7a8ae6d78f205348bc63c") }
> db.decrementingOperationDemo.insertOne({"ProductName":"Product-2","ProductPrice":890});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7a8b86d78f205348bc63d") }
> db.decrementingOperationDemo.insertOne({"ProductName":"Product-3","ProductPrice":994});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7a8c66d78f205348bc63e") }
> db.decrementingOperationDemo.insertOne({"ProductName":"Product-4","ProductPrice":1000});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7a8d06d78f205348bc63f") }
সকল ডকুমেন্ট দেখানো
> db.decrementingOperationDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cd7a8ae6d78f205348bc63c"), "ProductName" : "Product-1", "ProductPrice" : 756 }
{ "_id" : ObjectId("5cd7a8b86d78f205348bc63d"), "ProductName" : "Product-2", "ProductPrice" : 890 }
{ "_id" : ObjectId("5cd7a8c66d78f205348bc63e"), "ProductName" : "Product-3", "ProductPrice" : 994 }
{ "_id" : ObjectId("5cd7a8d06d78f205348bc63f"), "ProductName" : "Product-4", "ProductPrice" : 1000 }
শর্তসাপেক্ষ ডিক্রিমেন্ট করা
শুধু Product-4 (ProductPrice > 0 হলে) এর দাম ১০ কমাতে:
> db.decrementingOperationDemo.update(
{ _id: ObjectId("5cd7a8d06d78f205348bc63f"), ProductPrice: { $gt: 0 } },
{ $inc: { ProductPrice: -10 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ফলাফল দেখানো
> db.decrementingOperationDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cd7a8d06d78f205348bc63f"), "ProductName" : "Product-4", "ProductPrice" : 990 }
ব্যাখ্যা: শুধু নির্দিষ্ট `_id` এবং `ProductPrice > 0` শর্ত পূরণ করলেই ডিক্রিমেন্ট হয়েছে। বাকি ডকুমেন্ট অপরিবর্তিত। $inc পজিটিভ দিলে ইনক্রিমেন্ট, নেগেটিভ দিলে ডিক্রিমেন্ট করে।