Potresti provare a creare un indice di testo
su country_lc
, region_lc
e city_lc
campi:
db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )
Indici di testo sono una nuova funzionalità in MongoDB 2.4. Sono stati aggiunti per supportare la ricerca di testo di contenuti di stringhe nei documenti di una raccolta. Dai un'occhiata alla documentazione ufficiale per suggerimenti sulle prestazioni.
Inoltre, puoi provare a riscrivere la query come
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 })
(Attenzione :Questo è o non è equivalente alla tua query, a seconda della struttura dei documenti.)