Podría intentar crear un índice de texto
en el country_lc
, region_lc
y city_lc
campos:
db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )
Índices de texto son una nueva característica en MongoDB 2.4. Se agregaron para admitir la búsqueda de texto de contenido de cadena en documentos de una colección. Consulte la documentación oficial para obtener sugerencias de rendimiento.
Además, puede intentar reescribir la consulta como
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 })
(Precaución :Esto es, o no, equivalente a su consulta, dependiendo de la estructura de los documentos).