Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để xóa đối tượng khỏi mảng trong MongoDB?

Bạn có thể sử dụng toán tử $ pull để xóa đối tượng khỏi một mảng trong MongoDB. Để hiểu khái niệm, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -

> db.removeObjectFromArrayDemo.insertOne(
... {
   ...
   ... "StudentName": "John",
   ... "StudentAcademicProjectDetails":
   ... [{
         ... "StudentProjectId": 101,
         ... "StudentProjectName": "Pig Dice Game"
      ... },
      ... {
         ... "StudentProjectId": 110,
         ... "StudentProjectName": "Library Management System"
      ... },
      ...
      ... {
         ... "StudentProjectId": 120,
         ... "StudentProjectName": "Phonebook Management System"
      ... }
   ... ]
   ... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8ad13d6cea1f28b7aa0817")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau -

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

Sau đây là kết quả -

{
   "_id" : ObjectId("5c8ad13d6cea1f28b7aa0817"),
   "StudentName" : "John",
   "StudentAcademicProjectDetails" : [
      {
         "StudentProjectId" : 101,
         "StudentProjectName" : "Pig Dice Game"
      },
      {
         "StudentProjectId" : 110,
         "StudentProjectName" : "Library Management System"
      },
      {
         "StudentProjectId" : 120,
         "StudentProjectName" : "Phonebook Management System"
      }
   ]
}

Đây là truy vấn để xóa đối tượng khỏi một mảng trong MongoDB -

> db.removeObjectFromArrayDemo.update(
   ... {'_id': ObjectId("5c8ad13d6cea1f28b7aa0817")},
   ... { $pull: { "StudentAcademicProjectDetails" : { StudentProjectId: 101 } } },
   ... false,
   ... true
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Hãy để chúng tôi kiểm tra các tài liệu từ bộ sưu tập để kiểm tra đối tượng đã được xóa khỏi một mảng hay chưa. Truy vấn như sau -

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

Sau đây là kết quả -

{
   "_id" : ObjectId("5c8ad13d6cea1f28b7aa0817"),
   "StudentName" : "John",
   "StudentAcademicProjectDetails" : [
      {
         "StudentProjectId" : 110,
         "StudentProjectName" : "Library Management System"
      },
      {
         "StudentProjectId" : 120,
         "StudentProjectName" : "Phonebook Management System"
      }
   ]
}

Nhìn vào kết quả mẫu ở trên, trường “StudentProjectId” với 101 đã bị xóa.