Điều này đang xảy ra bởi vì mặc dù
db.repo.remove({"date" : {"$lt" : new Date(1362096000000)}})
trông giống như một lệnh duy nhất, nó thực sự hoạt động trên nhiều tài liệu - càng nhiều tài liệu thỏa mãn truy vấn này.
Khi bạn sử dụng bản sao, mọi thao tác thay đổi phải được ghi vào một tập hợp đặc biệt trong local
cơ sở dữ liệu có tên oplog.rs
- viết tắt là oplog.
Oplog phải có một mục nhập cho mỗi tài liệu đã xóa và mọi mục nhập đó cần được áp dụng cho oplog trên mỗi mục phụ trước khi nó cũng có thể xóa cùng một bản ghi.
Một điều tôi có thể đề xuất bạn nên xem xét là chỉ mục TTL - họ sẽ "tự động" xóa tài liệu dựa trên ngày hết hạn / giá trị mà bạn đặt - theo cách này, bạn sẽ không phải xóa nhiều lần và thay vào đó sẽ có thể tải nhiều hơn theo thời gian.