テキストインデックス
を作成してみてください。 country_lc
で 、region_lc
およびcity_lc
フィールド:
db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )
テキストインデックス MongoDB2.4の新機能です。これらは、コレクションのドキュメント内の文字列コンテンツのテキスト検索をサポートするために追加されました。パフォーマンスのヒントについては、公式ドキュメントをご覧ください。
さらに、クエリを次のように書き換えてみることができます
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 })
(注意 :これは、ドキュメントの構造に応じて、クエリと同等であるか、同等ではありません。)