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

Làm cách nào để bạn xóa một phần tử mảng theo chỉ mục của nó trong MongoDB

Để loại bỏ phần tử mảng theo chỉ mục của nó trong MongoDB, bạn có thể sử dụng toán tử $ unset và $ pull. Có hai bước để xóa các phần tử mảng khỏi một mảng, cú pháp tương tự như sau:

db.yourCollectionName.update({},{$unset:{"yourArrayListName.yourPosition":yourPositionValue}};
db.yourCollectionName.update({},{$pull:{"yourArrayListName":null}});

Để 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.removeArrayElements.insertOne({"StudentName":"Larry","StudentAge":23,"TechnicalSub
ject":["C","C++","Java","MongoDB"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ea4879c4643706aef56d2")
}

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

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

{
   "_id" : ObjectId("5c6ea4879c4643706aef56d2"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "TechnicalSubject" : [
      "C",
      "C++",
      "Java",
      "MongoDB"
   ]
}

Đây là truy vấn để loại bỏ phần tử mảng theo chỉ mục của nó:

> db.removeArrayElements.update({},{$unset:{"TechnicalSubject.3":1}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.removeArrayElements.update({},{$pull:{"TechnicalSubject":null}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Ở trên, chúng tôi đã loại bỏ phần tử mảng “MongoDB”, nằm ở chỉ mục 3. Hãy để chúng tôi hiển thị các tài liệu từ một bộ sưu tập. Truy vấn như sau:

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

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

{
   "_id" : ObjectId("5c6ea4879c4643706aef56d2"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "TechnicalSubject" : [
      "C",
      "C++",
      "Java"
   ]
}

Nhìn vào kết quả đầu ra mẫu ở trên, chỉ số 3, tức là vị trí 4 đã bị xóa khỏi mảng, tức là phần tử “MongoDB”.