Các trường hợp hay gặp nhất:
$regexkhông neo đầu chuỗi./^abc/dùng được index (là một dải liên tục);/abc/hay/abc$/thì không. Regex cói(không phân biệt hoa thường) cũng không dùng được index thường — cần index có collation tương ứng hoặc text index.- Sai kiểu dữ liệu. Field lưu
"12"(string) mà query{ userId: 12 }(number) sẽ không khớp entry nào; BSON phân biệt kiểu. Đây là lỗi kinh điển khi dữ liệu import từ CSV. $ne,$nin,$not. Là điều kiện phủ định, phải duyệt gần như toàn bộ index nên optimizer thường bỏ qua.- Toán tử tính toán trên field.
{ $expr: { $gt: [{ $multiply: ['$price', '$qty'] }, 100] } }hay$wherekhông dùng được index vì phải tính từng document. - Không dùng prefix của compound index. Index
{ a: 1, b: 1 }phục vụ query theoahoặca + b, không phục vụ query chỉ theob. - Field nằm trong document lồng có tên khác. Query
'user.name'cần index đúng đường dẫn'user.name', index trênuserkhông thay thế được.
Cách xác nhận: chạy explain('executionStats'), nếu thấy COLLSCAN thì đối chiếu danh sách trên.