ใช้โอเปอเรเตอร์ $pull ร่วมกับตำแหน่งอาร์เรย์ (array index) เพื่อลบสมาชิกจากอาร์เรย์ซ้อนกัน 2 ระดับ
ตัวอย่างการใช้งาน
สร้างคอลเลกชัน removeElementFromDoublyNestedArrayDemo:
> db.removeElementFromDoublyNestedArrayDemo.insertOne(
... {
... "_id" : "1",
... "UserName" : "Larry",
... "UserDetails" : [
... {
... "UserCountryName" : "US",
... "UserLocation" : [
... { "UserCityName" : "New York" },
... { "UserZipCode" : "10001" }
... ]
... }
... ]
... }
... );
{ "acknowledged" : true, "insertedId" : "1" }
> db.removeElementFromDoublyNestedArrayDemo.insertOne(
... {
... "_id" : "2",
... "UserName" : "Mike",
... "UserDetails" : [
... {
... "UserCountryName" : "UK",
... "UserLocation" : [
... { "UserCityName" : "Bangor" },
... { "UserZipCode" : "20010" }
... ]
... }
... ]
... }
... );
{ "acknowledged" : true, "insertedId" : "2" }
แสดงข้อมูลทั้งหมด:
> db.removeElementFromDoublyNestedArrayDemo.find().pretty();
{"_id" : "1", "UserName" : "Larry", "UserDetails" : [ {"UserCountryName" : "US", "UserLocation" : [ {"UserCityName" : "New York"}, {"UserZipCode" : "10001"} ] } ] }
{"_id" : "2", "UserName" : "Mike", "UserDetails" : [ {"UserCountryName" : "UK", "UserLocation" : [ {"UserCityName" : "Bangor"}, {"UserZipCode" : "20010"} ] } ] }
ลบสมาชิกที่มี UserZipCode: "20010" จากเอกสาร _id: "2" (อาร์เรย์ชั้นในที่ index 0):
> db.removeElementFromDoublyNestedArrayDemo.update(
... { _id : "2" },
... {$pull : {"UserDetails.0.UserLocation" : {"UserZipCode":"20010"}}}
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ตรวจสอบผลลัพธ์ (UserZipCode: 20010 ถูกลบออก):
> db.removeElementFromDoublyNestedArrayDemo.find().pretty();
{"_id" : "1", "UserName" : "Larry", "UserDetails" : [ {"UserCountryName" : "US", "UserLocation" : [ {"UserCityName" : "New York"}, {"UserZipCode" : "10001"} ] } ] }
{"_id" : "2", "UserName" : "Mike", "UserDetails" : [ {"UserCountryName" : "UK", "UserLocation" : [ {"UserCityName" : "Bangor"} ] } ] }