Bạn có thể thử tạo chỉ mục văn bản
trên country_lc
, region_lc
và city_lc
lĩnh vực:
db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )
Chỉ số văn bản là một tính năng mới trong MongoDB 2.4. Chúng đã được thêm vào để hỗ trợ tìm kiếm văn bản của nội dung chuỗi trong các tài liệu của một bộ sưu tập. Vui lòng xem tài liệu chính thức để biết các gợi ý về hiệu suất.
Hơn nữa, bạn có thể thử viết lại truy vấn dưới dạng
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 })
( Thận trọng :Đây là, hoặc không, tương đương với truy vấn của bạn, tùy thuộc vào cấu trúc của tài liệu.)