Ponieważ już utworzyłeś indeks złożony dla (a, b)
, wszystkie twoje wyrażenia klauzul są obsługiwane przez indeksy -> mongo użyje skanowania indeksów zamiast skanowania kolekcji. Prawdopodobnie wystarczająco szybko.
Odniesienie:klauzule i indeksy $or
Teraz o twoim pytaniu
$in
dopasuj całe pole. Jeśli chcesz dopasować (a,b)
to oczywiście (a,b)
musi stać się obiektem osadzonym, aby wyszukiwać za pomocą $in
.
Nie jestem pewien, czy tworzenie osadzonego obiektu pasuje do Twojego obecnego schematu/wymagania. Ale jeśli tak jest, $in
znany z lepszej wydajności w porównaniu do $or
:
W tym przypadku, jeśli masz osadzony obiekt, taki jak:{e: {a: 'x', b: 'y'}}
następnie db.collections.createIndex({e: 1})
w połączeniu z $in
przyspieszy działanie