ใช้ operator $push ร่วมกับคำสั่ง update() เพื่อเพิ่มค่าใหม่เข้าไปในฟิลด์ที่เป็นอาร์เรย์
รูปแบบคำสั่ง
db.collectionName.update(
{ query_condition },
{ $push: { "arrayFieldName": "newValue" } }
);
ตัวอย่างเต็มรูปแบบ
1. สร้างข้อมูลตัวอย่าง
> db.updateDemo.insertOne({"StudentName":"Larry","StudentCoreSubject":["Java","C"]});
> db.updateDemo.insertOne({"StudentName":"Robert","StudentCoreSubject":["C++","MongoDB"]});
>> db.updateDemo.insertOne({"StudentName":"Chris","StudentCoreSubject":["Python"]});
2. แสดงข้อมูลก่อนอัปเดต
> db.updateDemo.find().pretty();
{ "_id" : ObjectId("..."), "StudentName" : "Larry", "StudentCoreSubject" : [ "Java", "C" ] }
{ "_id" : ObjectId("..."), "StudentName" : "Robert", "StudentCoreSubject" : [ "C++", "MongoDB" ] }
{ "_id" : ObjectId("..."), "StudentName" : "Chris", "StudentCoreSubject" : [ "Python" ] }
3. เพิ่ม "MySQL" เข้าไปในอาร์เรย์ของ Larry
> db.updateDemo.update(
{ _id: ObjectId("5c98ba78330fd0aa0d2fe4c9") },
{ $push: { "StudentCoreSubject": "MySQL" } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
4. ตรวจสอบผลลัพธ์
> db.updateDemo.find().pretty();
{ "_id" : ObjectId("..."), "StudentName" : "Larry", "StudentCoreSubject" : [ "Java", "C", "MySQL" ] }
{ "_id" : ObjectId("..."), "StudentName" : "Robert", "StudentCoreSubject" : [ "C++", "MongoDB" ] }
{ "_id" : ObjectId("..."), "StudentName" : "Chris", "StudentCoreSubject" : [ "Python" ] }
Operator เพิ่มเติมที่เกี่ยวข้อง
$push- เพิ่มค่าเข้าไปในอาร์เรย์ (อนุญาตให้ซ้ำได้)$addToSet- เพิ่มค่าเฉพาะที่ไม่ซ้ำในอาร์เรย์$each- เพิ่มหลายค่าพร้อมกัน:{ $push: { field: { $each: [val1, val2] } } }$position- ระบุตำแหน่งที่จะแทรก
สรุป
$push เป็นวิธีมาตรฐานในการเพิ่มข้อมูลเข้าไปในอาร์เรย์ของ MongoDB ใช้ร่วมกับ update() หรือ updateOne()/updateMany() ในเวอร์ชันใหม่