2014-09-02 4 views
2

Pourquoi cette requête n'utilise-t-elle pas cet index lors de la recherche de documents comme ceux-ci?

Ma Recherche:

{ 
    "unique_contact_method.enrichments": { 
    "$not": { 
     "$elemMatch": { 
     "created_by.name":enrichment_name 
}}}} 

Mon Indice

{ key: { "unique_contact_method.enrichments.created_by.name": 1 }, ... } 

Mes Documents:

{ 
    "created_at": "...", 
    "unique_contact_method": { 
     "type" : "...", 
     "handle": "...", 
     "enrichments": [{ 
      "created_at" : "...", 
      "created_by" : { 
       "name"  : "...", 
       "version" : "..." 
      }, 
      "attrs" : { /* ... */ } 
      }, /* ... */ 
     ], 
     "master_id_doc_id": "..." 
    } 
} 

Répondre

4

$not peut être difficile avec des index. Réécrire la requête comme:

{'unique_contact_method.enrichments.created_by.name': {$ne: enrichment_name}} 

Cela devrait certainement utiliser l'index.

Questions connexes