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

MongoDB: ดึงค่าเฉพาะออกจากอาร์เรย์ด้วย $pull

ใช้ $pull ร่วมกับ update() เพื่อลบค่าเฉพาะออกจากอาร์เรย์ สร้างคอลเลกชันตัวอย่าง:

> db.demo318.insertOne({Subject:["MySQL","MongoDB","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50ea6df8647eb59e562062") }
> db.demo318.insertOne({Subject:["Spring","Hibernate"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50ea78f8647eb59e562063") }

แสดงข้อมูล:

> db.demo318.find();

ลบค่า "Hibernate" ออกจากอาร์เรย์ Subject:

> db.demo318.update({Subject:"Hibernate"},{$pull:{"Subject":"Hibernate"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ตรวจสอบผลลัพธ์:

> db.demo318.find();

ผลลัพธ์:

{ "_id" : ObjectId("5e50ea6df8647eb59e562062"), "Subject" : [ "MySQL", "MongoDB", "Java" ] }
{ "_id" : ObjectId("5e50ea78f8647eb59e562063"), "Subject" : [ "Spring" ] }

รายละเอียด $pull

  • ลบ ทุก สมาชิกในอาร์เรย์ที่ตรงกับเงื่อนไข
  • เงื่อนไขสามารถเป็นค่าเท่ากัน, regex, หรือ query operators ได้
  • ตัวอย่าง: { $pull: { scores: { $lt: 50 } } } ลบคะแนนต่ำกว่า 50 ทั้งหมด
  • ใน MongoDB 4.2+ ควรใช้ updateOne() หรือ updateMany() แทน update()