sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongo $in con índice compuesto

Como ya creaste un índice compuesto para (a, b) , todas las expresiones de sus cláusulas son compatibles con los índices -> mongo utilizará el escaneo de índice en lugar del escaneo de colección. Probablemente lo suficientemente rápido.

Referencia:$or Clauses and Indexes

Ahora sobre tu pregunta

$in coincide con todo el campo. Si desea hacer coincidir (a,b) entonces obviamente (a,b) debe convertirse en un objeto incrustado para buscar con $in .

No estoy seguro de si hacer que el objeto incrustado se ajuste a su esquema/requisito actual. Pero si es el caso, $in ha conocido por un mejor rendimiento en comparación con $or :

En este caso, si tiene un objeto incrustado como:{e: {a: 'x', b: 'y'}} luego db.collections.createIndex({e: 1}) emparejado con $in acelerará las cosas