MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

xóa đối tượng khỏi mảng đối tượng lồng nhau mongodb

Bạn có thể thực hiện việc này bằng cách chỉ định một cái gì đó để khớp với "tài liệu" và sau đó là mục nhập mảng "dịch chuyển" bắt buộc làm biểu thức truy vấn cho .update() . Sau đó, áp dụng vị trí $ nhà điều hành cho chỉ mục mảng phù hợp với $pull :

db.collection.update(
 { "_id": ObjectId("59180305c19dbaa4ecd9ee59"), "shifts.timeslot": "8:00 - NOON" },
 { "$pull": { "shifts.$.volunteers": { "fullname": "Mary Mack" } } }
)

Điều đó không sao trong trường hợp này vì bạn chỉ đang cố gắng "khớp" trên mảng "bên ngoài" trong cấu trúc lồng nhau và $pull có các đối số truy vấn của riêng nó để xác định mục nhập mảng cần loại bỏ.

Tuy nhiên, bạn thực sự nên cẩn thận khi sử dụng "các mảng lồng nhau". Trong khi $pull hoạt động như thế này hoạt động, cập nhật cho mảng "bên trong" không thực sự khả thi vì vị trí $ nhà điều hành sẽ chỉ khớp với phần tử "đầu tiên" đáp ứng điều kiện. Vì vậy, ví dụ của bạn về "Mary Mack" trong nhiều ca sẽ chỉ khớp trong mục nhập mảng "ca" đầu tiên được tìm thấy.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cập nhật nhiều tài liệu theo bộ id. Mongoose

  2. Nâng cấp mongodb không có tác dụng và vẫn hiển thị phiên bản cũ

  3. Đọc từ Kinesis đang đưa ra các bản ghi trống khi chạy bằng số thứ tự trước đó hoặc dấu thời gian

  4. Nhận dữ liệu giữa hai ngày mongo

  5. MongoDB Chuyển đổi chuỗi thành mảng