ใช้ $push สำหรับเพิ่มข้อมูลลงอาร์เรย์
หากไม่สามารถ push เข้าอาร์เรย์ได้ ให้ตรวจสอบว่าใช้ operator $push อยู่ภายใน update operation หรือไม่
ตัวอย่างข้อมูล
> db.demo445.insertOne({ "ListOfFriends": ["Robert", "Mike", "Sam", "Carol", "David", "Mike"] });
แสดงข้อมูลก่อน
> db.demo445.find().pretty();
Query Push ข้อมูลใหม่
> db.demo445.update(
{ _id: ObjectId("5e78f099bbc41e36cc3caec2") },
{ $push: { ListOfFriends: "Chris Brown" } }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
ผลลัพธ์หลัง Push
{ "_id": ObjectId(...), "ListOfFriends": ["Robert", "Mike", "Sam", "Carol", "David", "Mike", "Chris Brown"] }
สาเหตุทั่วไปที่ Push ไม่ได้
- ไม่ได้ใช้ $push - พยายาม set ค่าโดยตรงแทนการ push
- ฟิลด์ไม่ใช่อาร์เรย์ - ฟิลด์เป็น string หรือ object แทน
- Syntax ผิด - ขาด $ หรือ วงเล็บไม่ถูกต้อง
- Query ไม่เจอเอกสาร - filter ไม่ตรงกับเอกสารใดๆ
Operator เพิ่มเติมสำหรับอาร์เรย์
$push- เพิ่มต่อท้าย$addToSet- เพิ่มถ้ายังไม่มี (unique)$push: { $each: [...], $position: 0 }- เพิ่มหลายค่า/ระบุตำแหน่ง$pop- ลบตัวแรก/สุดท้าย$pull- ลบตามเงื่อนไข