คุณสามารถใช้ตัวดำเนินการ $pull สำหรับสิ่งนี้ ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน เราได้เพิ่มวัตถุว่างด้วย -
> db.removeEmptyObjectsDemo.insertOne(
{
"_id" :101,
"LoginDate" :new ISODate(),
"UserDetails" : [
{
"UserName" : "John"
},
{
},
{
"UserName" : "Sam"
}
]
}
);
{ "acknowledged" : true, "insertedId" : 101 } ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -
> db.removeEmptyObjectsDemo.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{
"_id" : 101,
"LoginDate" : ISODate("2019-05-25T04:46:29.505Z"),
"UserDetails" : [
{
"UserName" : "John"
},
{
},
{
"UserName" : "Sam"
}
]
} ต่อไปนี้เป็นแบบสอบถามเพื่อลบวัตถุว่างในอาร์เรย์วัตถุ -
> db.removeEmptyObjectsDemo.update(
{},
{ "$pull": { "UserDetails": { "UserName": { "$exists": false } } } },
{ "multi": true }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) ให้เราตรวจสอบเอกสารจากการรวบรวมข้างต้น -
> db.removeEmptyObjectsDemo.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ ลบวัตถุที่ว่างเปล่าเรียบร้อยแล้ว -
{
"_id" : 101,
"LoginDate" : ISODate("2019-05-25T04:46:29.505Z"),
"UserDetails" : [
{
"UserName" : "John"
},
{
"UserName" : "Sam"
}
]
}