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