Anda dapat mencoba membuat indeks teks
di country_lc
, region_lc
dan city_lc
bidang:
db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )
Indeks teks adalah fitur baru di MongoDB 2.4. Mereka ditambahkan untuk mendukung pencarian teks konten string dalam dokumen koleksi. Silakan lihat dokumentasi resmi untuk petunjuk performa.
Selain itu, Anda dapat mencoba menulis ulang kueri sebagai
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 })
(Perhatian :Ini setara atau tidak sama dengan kueri Anda, bergantung pada struktur dokumen.)