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

mongodb sort y regex consulta de manera eficiente

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).