Protože jste již vytvořili složený index pro (a, b)
, všechny vaše výrazy klauzulí jsou podporovány indexy -> mongo bude místo skenování kolekce používat index scan. Pravděpodobně je to dost rychlé.
Reference:$or klauzule a indexy
Nyní k vaší otázce
$in
zápas celé pole. Pokud chcete odpovídat (a,b)
pak samozřejmě (a,b)
pro vyhledávání pomocí $in
se musí stát vloženým objektem .
Nejste si jisti, zda vytvoření vloženého objektu vyhovuje vašemu aktuálnímu schématu / požadavku. Ale pokud tomu tak je, $in
je známý pro lepší výkon ve srovnání s $or
:
V tomto případě, pokud máte vložený objekt jako:{e: {a: 'x', b: 'y'}}
pak db.collections.createIndex({e: 1})
spárováno s $in
věci urychlí