Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Truy vấn MongoDB để xóa các đối tượng rỗng trong mảng đối tượng

Bạn có thể sử dụng toán tử $pull để thực hiện việc này. Trước tiên, hãy tạo một collection với các document. Ở đây chúng ta cũng thêm một đối tượng rỗng:

> db.removeEmptyObjectsDemo.insertOne(
  {
    "_id": 101,
    "LoginDate": new ISODate(),
    "UserDetails": [
      { "UserName": "John" },
      {},
      { "UserName": "Sam" }
    ]
  }
);
{ "acknowledged": true, "insertedId": 101 }

Truy vấn sau hiển thị tất cả document trong collection bằng phương thức find():

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

Kết quả trả về:

{
  "_id": 101,
  "LoginDate": ISODate("2019-05-25T04:46:29.505Z"),
  "UserDetails": [
    { "UserName": "John" },
    {},
    { "UserName": "Sam" }
  ]
}

Truy vấn sau sẽ xóa các đối tượng rỗng trong mảng đối tượng:

> db.removeEmptyObjectsDemo.update(
  {},
  { "$pull": { "UserDetails": { "UserName": { "$exists": false } } } },
  { "multi": true }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

Kiểm tra lại các document trong collection:

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

Kết quả sau khi xóa thành công đối tượng rỗng:

{
  "_id": 101,
  "LoginDate": ISODate("2019-05-25T04:46:29.505Z"),
  "UserDetails": [
    { "UserName": "John" },
    { "UserName": "Sam" }
  ]
}