การลบออบเจกต์ว่างออกจากอาร์เรย์ด้วย $pull
สามารถใช้ตัวดำเนินการ $pull เพื่อลบออบเจกต์ว่างออกจากอาร์เรย์ได้ เริ่มต้นด้วยการสร้างคอลเลกชันพร้อมเอกสารตัวอย่าง ซึ่งมีการเพิ่มออบเจกต์ว่างเข้าไปด้วย
> db.removeEmptyObjectsDemo.insertOne( { "UserDetails" : [ { "UserName" : "John" }, {}, { "UserName" : "Sam" } ] } );
คำสั่งแสดงเอกสารทั้งหมดในคอลเลกชัน:
> db.removeEmptyObjectsDemo.find().pretty();
ผลลัพธ์ก่อนลบออบเจกต์ว่าง:
{ "_id" : 101, "UserDetails" : [ { "UserName" : "John" }, {}, { "UserName" : "Sam" } ] }
คำสั่งลบออบเจกต์ว่างในอาร์เรย์:
> db.removeEmptyObjectsDemo.update( {}, { "$pull": { "UserDetails": { "UserName": { "$exists": false } } } }, { "multi": true } );
ตรวจสอบเอกสารอีกครั้งหลังจากลบ:
> db.removeEmptyObjectsDemo.find().pretty();
ผลลัพธ์หลังลบออบเจกต์ว่างสำเร็จ:
{ "_id" : 101, "UserDetails" : [ { "UserName" : "John" }, { "UserName" : "Sam" } ] }