Vì bạn đã tạo chỉ mục kết hợp cho (a, b) , tất cả các biểu thức mệnh đề của bạn đều được hỗ trợ bởi các chỉ mục -> mongo sẽ sử dụng quét chỉ mục thay vì quét tập hợp. Nó có thể đủ nhanh.
Tham khảo: $ hoặc Điều khoản và chỉ mục
Bây giờ về câu hỏi của bạn
$in khớp toàn bộ lĩnh vực. Nếu bạn muốn khớp với (a, b) thì rõ ràng là (a, b) phải trở thành một đối tượng được nhúng để tìm kiếm với $in .
Không chắc liệu việc tạo đối tượng nhúng có phù hợp với yêu cầu / lược đồ hiện tại của bạn hay không. Nhưng nếu đúng như vậy, $in được biết đến với hiệu suất tốt hơn so với $or
:
Trong trường hợp này, nếu bạn đã nhúng đối tượng như:{e: {a: 'x', b: 'y'}} rồi đến db.collections.createIndex({e: 1}) được ghép nối với $in sẽ tăng tốc mọi thứ