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ứ