MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongo $in com índice composto


Como você já criou um índice composto para (a, b) , todas as suas expressões de cláusulas são suportadas por índices -> mongo usará varredura de índice em vez de varredura de coleção. Provavelmente rápido o suficiente.

Referência:$ou cláusulas e índices

Agora sobre sua pergunta

$in corresponder ao campo inteiro. Se você deseja corresponder (a,b) então obviamente (a,b) deve se tornar um objeto incorporado para pesquisar com $in .

Não tenho certeza se a criação de objetos incorporados se encaixa no seu esquema/requisito atual. Mas se for o caso, $in é conhecido pelo melhor desempenho em comparação com $or :

Nesse caso, se você tiver um objeto incorporado como:{e: {a: 'x', b: 'y'}} então db.collections.createIndex({e: 1}) emparelhado com $in vai acelerar as coisas