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

จะลบองค์ประกอบอาร์เรย์ด้วยดัชนีใน MongoDB ได้อย่างไร


คุณสามารถลบองค์ประกอบอาร์เรย์ด้วยดัชนีโดยใช้สองขั้นตอนต่อไปนี้ -

ขั้นตอนแรกมีดังนี้ −

db.yourCollectionName.update({}, {$unset : {"yourArrayFieldName.yourIndexValue" : 1 }});

ไวยากรณ์ด้านบนจะใส่ค่า null ที่ตำแหน่งของ 'yourIndexValue' หลังจากนั้น คุณต้องดึงค่า null จาก array ที่ file ส่งมาเพื่อลบออกจาก array

ขั้นตอนที่สองมีดังนี้ −

db.yourCollectionName.update({}, {$pull : {"yourArrayFieldName" : null}});

ในการใช้ไวยากรณ์ ให้เราสร้างคอลเลกชันด้วยเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -

> db.removeArrayElementByItsIndexDemo.insertOne({"InstructorName":"David",
   "InstructorAge":28,"InstructorSubject":["MongoDB","MySQL","Java","SQL Server","PL/SQL"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8abbfc6cea1f28b7aa0803")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังต่อไปนี้ −

> db.removeArrayElementByItsIndexDemo.find().pretty();

ต่อไปนี้เป็นผลลัพธ์ -

{
   "_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"),
   "InstructorName" : "David",
   "InstructorAge" : 28,
   "InstructorSubject" : [
      "MongoDB",
      "MySQL",
      "Java",
      "SQL Server",
      "PL/SQL"
   ]
}

นี่คือการสืบค้นเพื่อลบองค์ประกอบอาร์เรย์โดยดัชนี

ขั้นตอนที่ 1 - แบบสอบถามมีดังต่อไปนี้ −

> db.removeArrayElementByItsIndexDemo.update({}, {$unset : {"InstructorSubject.2" : 1 }});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ขั้นตอนที่ 2 − แบบสอบถามมีดังต่อไปนี้ −

> db.removeArrayElementByItsIndexDemo.update({}, {$pull : {"InstructorSubject" : null}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ให้เราตรวจสอบองค์ประกอบอาร์เรย์ “Java” ว่าถูกลบออกหรือไม่ แบบสอบถามมีดังต่อไปนี้ −

> db.removeArrayElementByItsIndexDemo.find().pretty();

ต่อไปนี้เป็นผลลัพธ์ -

{
   "_id" : ObjectId("5c8abbfc6cea1f28b7aa0803"),
   "InstructorName" : "David",
   "InstructorAge" : 28,
   "InstructorSubject" : [
      "MongoDB",
      "MySQL",
      "SQL Server",
      "PL/SQL"
   ]
}

ดูเอาต์พุตตัวอย่าง องค์ประกอบอาร์เรย์ "Java" ถูกลบออกอย่างสมบูรณ์