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

Làm cách nào để xóa phần tử mảng trong MongoDB?

Để xóa phần tử mảng trong MongoDB, bạn có thể sử dụng toán tử $ pull và $ in. Cú pháp như sau:

db.yourCollectionName.update({},
   {$pull:{yourFirstArrayName:{$in:["yourValue"]},yourSecondArrayName:"yourValue"}},
   {multi:true}
);

Để hiểu cú pháp trên, 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 tài liệu như sau:

>db.removeArrayElement.insertOne({"StudentName":"Larry","StudentCoreSubject":["MongoD
B","MySQL","SQL Server","Java"],"StudentFavouriteTeacher":["John","Marry","Carol"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ec9c46fd07954a4890688")
}

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.removeArrayElement.find().pretty();

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

{
   "_id" : ObjectId("5c6ec9c46fd07954a4890688"),
   "StudentName" : "Larry",
   "StudentCoreSubject" : [
      "MongoDB",
      "MySQL",
      "SQL Server",
      "Java"
   ],
   "StudentFavouriteTeacher" : [
      "John",
      "Marry",
      "Carol"
   ]
}

Đây là truy vấn để loại bỏ phần tử mảng trong MongoDB:

> db.removeArrayElement.update({},
... {$pull:{StudentCoreSubject:{$in:["Java"]},StudentFavouriteTeacher:"Marry"}},
... {multi:true}
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Chúng ta có phần tử “Java” từ mảng đầu tiên (“StudentCoreSubject”) ở trên và giá trị thứ hai là phần tử “Marry” từ mảng thứ hai (“StudentFavouriteTeacher”).

Hãy để chúng tôi hiển thị các tài liệu từ bộ sưu tập một lần nữa để kiểm tra xem hai phần tử đã bị loại bỏ hay chưa. Truy vấn như sau:

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

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

{
   "_id" : ObjectId("5c6ec9c46fd07954a4890688"),
   "StudentName" : "Larry",
   "StudentCoreSubject" : [
      "MongoDB",
      "MySQL",
      "SQL Server"
   ],
   "StudentFavouriteTeacher" : [
      "John",
      "Carol"
   ]
}

Nhìn vào kết quả đầu ra mẫu ở trên, không có phần tử “Java” nào trong mảng đầu tiên (“StudentCoreSubject”) và không có phần tử “Marry” trong mảng thứ hai (“StudentFavouriteTeacher”). Do đó, chúng tôi đã xóa thành công chúng khỏi bộ sưu tập.