Vous pouvez essayer de créer un index de texte
sur le country_lc
, region_lc
et city_lc
champs :
db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )
Indices de texte sont une nouvelle fonctionnalité de MongoDB 2.4. Ils ont été ajoutés pour prendre en charge la recherche de texte de contenu de chaîne dans les documents d'une collection. Veuillez consulter la documentation officielle pour obtenir des conseils sur les performances.
De plus, vous pouvez essayer de réécrire la requête sous
db.location.find(
{ "docType": {"$in": [ "country", "region", "city" ]},
"$or": [
{ "country_lc": /^unit/ },
{ "region_lc": /^unit/ },
{ "city_lc": /^unit/ },
]
},
{ "country": 1, "region": 1, "city": 1, "docType" :1 }
).sort({ "country_lc" :1, "region_lc": 1, "city_lc":1 })
(Attention :Ceci est, ou n'est pas, équivalent à votre requête, selon la structure des documents.)