Đã tìm thấy câu trả lời của tôi trong câu hỏi này: Thứ tự của $ lt và $ gt trong truy vấn phạm vi MongoDB
Chỉ mục của tôi là chỉ mục đa khóa (trên các thẻ tags
) và tôi đang chạy một truy vấn phạm vi (trên post_time
). Rõ ràng
, MongoDB không thể sử dụng cả hai bên của phạm vi làm bộ lọc trong trường hợp này, vì vậy nó chỉ chọn $gte
mệnh đề nào đến trước. Vì giới hạn dưới của tôi là post_time
thấp nhất giá trị, MongoDB bắt đầu quét tất cả các đối tượng.
Thật không may, đây không phải là toàn bộ câu chuyện. Cố gắng giải quyết vấn đề, tôi cũng đã tạo các chỉ mục không phải đa khóa nhưng MongoDB nhất quyết sử dụng chỉ mục không hợp lệ. Điều đó khiến tôi nghĩ rằng vấn đề nằm ở chỗ khác. Cuối cùng, tôi phải bỏ chỉ mục đa khóa và tạo một chỉ mục không có thẻ tags
đồng ruộng. Hiện tại mọi thứ đều ổn.