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

ไม่สามารถ Push เข้าอาร์เรย์ใน MongoDB ได้? วิธีแก้ไข


ใช้ $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 ไม่ได้

  1. ไม่ได้ใช้ $push - พยายาม set ค่าโดยตรงแทนการ push
  2. ฟิลด์ไม่ใช่อาร์เรย์ - ฟิลด์เป็น string หรือ object แทน
  3. Syntax ผิด - ขาด $ หรือ วงเล็บไม่ถูกต้อง
  4. Query ไม่เจอเอกสาร - filter ไม่ตรงกับเอกสารใดๆ

Operator เพิ่มเติมสำหรับอาร์เรย์

  • $push - เพิ่มต่อท้าย
  • $addToSet - เพิ่มถ้ายังไม่มี (unique)
  • $push: { $each: [...], $position: 0 } - เพิ่มหลายค่า/ระบุตำแหน่ง
  • $pop - ลบตัวแรก/สุดท้าย
  • $pull - ลบตามเงื่อนไข