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

MongoDB Query ดึง Element ออกจากอาร์เรย์ ($pull)

ใช้ $pull ลบ Element เฉพาะออกจากอาร์เรย์

โอเปอเรเตอร์ $pull ลบ Element ที่ Match ค่าที่ระบุออกจาก Array โดยอัตโนมัติจัด Index ใหม่

ตัวอย่างข้อมูล

> db.pullElementFromAnArrayDemo.insertOne({"StudentScores":[89,56,78,90]});

คำสั่งลบค่า 78 ออกจาก StudentScores

> db.pullElementFromAnArrayDemo.update({}, { $pull: { StudentScores: 78 } });
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ผลลัพธ์: 78 หายไป

> db.pullElementFromAnArrayDemo.find();
{ "_id" : ObjectId("5cd0104a588d4a6447b2e063"), "StudentScores" : [ 89, 56, 90 ] }

คุณสมบัติของ $pull

  • ลบ ทุก Element ที่ Match (ถ้ามี 78 หลายตัว จะหายหมด)
  • ทำงานกับ Primitive Values (String, Number, Boolean)
  • ทำงานกับ Objects/Sub-documents (Match ทุกฟิลด์ที่ระบุ)
  • Atomic ต่อ Document

รูปแบบการใช้งาน

// 1. ลบค่า Primitive
{ $pull: { scores: 78 } }

// 2. ลบ Object ที่ Match ทุก Field
{ $pull: { items: { name: "Pen", color: "blue" } } }

// 3. ลบด้วย Condition (Query Operator ใน Object)
{ $pull: { items: { price: { $lt: 10 } } } }

// 4. ลบหลายค่า ($in)
{ $pull: { tags: { $in: ["old", "deprecated"] } } }

ความแตกต่าง $pull vs $pop vs $set

OperatorพฤติกรรมUse Case
$pullลบ Element ที่ Match Value/Conditionลบเฉพาะค่าที่ต้องการ
$popลบ Element แรก ( -1 ) หรือสุดท้าย ( 1 )Queue/Stack Behavior
$set: { arr: [] }Clear ทั้ง Arrayลบทั้งหมด (Reset)
$unset: { arr: 1 }ลบ Field Array เลยลบ Field ทิ้ง

Modern Syntax

db.pullElementFromAnArrayDemo.updateOne(
    {},
    { $pull: { StudentScores: 78 } }
);