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

วิธีเพิ่มรายการใหม่เข้าไปในอาร์เรย์ของเอกสาร MongoDB ด้วย $push

ใช้ 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() ในเวอร์ชันใหม่