ใช้ $inc เพิ่มค่าหลายฟิลด์ในคำสั่งเดียว
โอเปอเรเตอร์ $inc รองรับการเพิ่มค่า (Increment) หลายฟิลด์พร้อมกันในคำสั่ง update() หรือ updateOne()/updateMany()
ตัวอย่างข้อมูล
> db.incrementDemo.insertOne({"Value1":10,"Value2":20});
คำสั่งเพิ่มค่า Value1 และ Value2 ทีละ 1
> db.incrementDemo.update(
{},
{ $inc: { Value1: 1, Value2: 1 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ผลลัพธ์หลังอัปเดต
> db.incrementDemo.find().pretty();
{
"_id" : ObjectId("5cbdaf07de8cc557214c0e15"),
"Value1" : 11,
"Value2" : 21
}
รายละเอียด
- ฟิลเตอร์
{}หมายถึงเลือกเอกสารแรกที่เจอ (หรือทั้งหมดถ้าใช้multi: true) $incรับออบเจ็กต์ที่ Key คือชื่อฟิลด์ และ Value คือจำนวนที่ต้องการเพิ่ม (สามารถเป็นลบได้ เช่น-5)- หากฟิลด์ไม่มีอยู่ จะถูกสร้างใหม่พร้อมตั้งค่าเท่ากับจำนวนที่เพิ่ม
รูปแบบสมัยใหม่ (MongoDB 3.2+)
// อัปเดทเอกสารเดียว
db.incrementDemo.updateOne({}, { $inc: { Value1: 1, Value2: 1 } });
// อัปเดททุกเอกสาร
db.incrementDemo.updateMany({}, { $inc: { Value1: 1, Value2: 1 } });