Với các chỉ mục kết hợp trong đó một trong các trường được lập chỉ mục là một mảng, MongoDB sẽ chỉ sử dụng giới hạn dưới hoặc giới hạn trên cho truy vấn phạm vi để đảm bảo các kết quả phù hợp được trả về. Xem SERVER-958 cho một ví dụ trong đó ràng buộc ở cả giới hạn chỉ mục trên và giới hạn dưới sẽ không tìm thấy tài liệu mong đợi.
Nếu truy vấn phạm vi của bạn nằm trên trường mảng, bạn có thể sử dụng mã <> $ elemMatch
để tối ưu hóa truy vấn của bạn trong giới hạn chỉ mục dự kiến. Như ở MongoDB 2.4, $ elemMatch
toán tử không hoạt động trên các trường không phải mảng nên rất tiếc điều này không giúp ích cho trường hợp sử dụng của bạn. Bạn có thể xem / upvote SERVER-6050:Xem xét cho phép áp dụng $ elemMatch cho các mảng không phải là mảng
trong trình theo dõi vấn đề MongoDB.
Ngoài ra còn có một vấn đề mở SERVER-7959:Quét có thể không mong muốn với các chỉ mục ghép khi một số trường là nhiều khóa mô tả hành vi này.