Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

อัปเดตและเพิ่มค่าสองฟิลด์พร้อมกันใน MongoDB

ใช้ $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 } });