Je zou kunnen proberen een tekstindex
te maken op de country_lc , region_lc en city_lc velden:
db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )
Tekstindexen zijn een nieuwe functie in MongoDB 2.4. Ze zijn toegevoegd om het zoeken naar tekst van tekenreeksinhoud in documenten van een verzameling te ondersteunen. Bekijk de officiële documentatie voor prestatietips.
Bovendien kunt u proberen de query te herschrijven als
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 })
(Let op :Dit is al dan niet gelijk aan uw vraag, afhankelijk van de structuur van de documenten.)