Có vì MongoDB chắc chắn sẽ sử dụng chỉ mục _id (idhack
).
Trong phương pháp thứ hai - như bạn đã quan sát - bạn không thể biết liệu một chỉ mục có được sử dụng cho một trường nhất định hay không.
Vì vậy, câu trả lời sẽ là:nó phụ thuộc.
Nếu bộ sưu tập của bạn có hàng triệu tài liệu trở lên và / hoặc số lượng trường tìm kiếm khá lớn, bạn nên ưu tiên phương pháp tìm kiếm đầu tiên. Đặc biệt nếu kích thước danh sách id không nhỏ và / hoặc các giá trị id liền kề.
Nếu bộ sưu tập của bạn khá nhỏ và bạn có thể chịu được việc quét toàn bộ, bạn có thể thích cách tiếp cận thứ hai hơn.
Trong mọi trường hợp, bạn nên kiểm chứng cả hai phương pháp bằng cách sử dụng explain()
.