Không có cách nào để kéo / loại bỏ theo chỉ mục mảng. Trên thực tế, đây là một vấn đề mở http://jira.mongodb.org/browse/SERVER-1014, bạn có thể bỏ phiếu cho nó.
Giải pháp là sử dụng $ unset và sau đó là $ pull:
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
Cập nhật:như đã đề cập trong một số nhận xét, cách tiếp cận này không phải là nguyên tử và có thể gây ra một số điều kiện chạy đua nếu các máy khách khác đọc và / hoặc ghi giữa hai hoạt động. Nếu chúng tôi cần hoạt động là nguyên tử, chúng tôi có thể:
- Đọc tài liệu từ cơ sở dữ liệu
- Cập nhật tài liệu và xóa mục trong mảng
- Thay thế tài liệu trong cơ sở dữ liệu. Để đảm bảo tài liệu không thay đổi kể từ khi chúng tôi đọc nó, chúng tôi có thể sử dụng bản cập nhật nếu mẫu hiện tại được mô tả trong tài liệu mongo