MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

ordenação mongodb e consulta regex de maneira eficiente


Você pode tentar criar um índice de texto no country_lc , region_lc e city_lc Campos:
db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )

Índices de texto são um novo recurso no MongoDB 2.4. Eles foram adicionados para oferecer suporte à pesquisa de texto de conteúdo de string em documentos de uma coleção. Por favor, dê uma olhada na documentação oficial para dicas de desempenho.

Além disso, você pode tentar reescrever a 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 })

(Cuidado :Isso é, ou não, equivalente à sua consulta, dependendo da estrutura dos documentos.)