MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongo $in avec index composé

Puisque vous créez déjà un index composé pour (a, b) , toutes vos expressions de clauses sont prises en charge par les index -> mongo utilisera l'analyse d'index au lieu de l'analyse de collection. C'est probablement assez rapide.

Référence :$or Clauses and Indexes

Maintenant à propos de votre question

$in correspondre à tout le champ. Si vous voulez faire correspondre (a,b) alors évidemment (a,b) doit devenir un objet intégré pour effectuer une recherche avec $in .

Vous ne savez pas si la création d'un objet intégré correspond à votre schéma/exigence actuel. Mais si c'est le cas, $in a connu pour de meilleures performances par rapport à $or :

Dans ce cas, si vous avez un objet intégré comme :{e: {a: 'x', b: 'y'}} puis db.collections.createIndex({e: 1}) associé à $in va accélérer les choses