2016-09-23 16 views
0

私は初心者であり、コンテンツコレクションのインデックスを作成しようとしています。私のクエリはMongodb文書のインデックス配列フィールド

以下
db.contents.find({title:{$regex: /arnab/i}, tags:{$regex: /Times/i}}) 

のように見える私のインデックスクエリ

db.contents.createIndex({title: 1, tags:1}) 

タグは任意の配列です。このクエリは動作しますか?タイトルと配列タグのインデックスを作成する方法はありますか?

ありがとうございます。

答えて

0

通常のフィールドと同じようにインデックスフィールドをインデックスすることができます。インデックス作成時に、MongoDBは配列フィールドのマルチインデックスを自動的に作成します。

db.contents.find({title:{$regex: /arnab/i}, tags:{$regex: /Times/i}})は、case insensitivecontains正規表現を使用した検索です。大文字小文字を区別しない正規表現のクエリのために

、一般的に効果的にインデックスを使用することはできません これらのクエリ:公式ドキュメントから

作成したインデックスは、このクエリではうまく利用できません。

正規表現ベースの検索では、検索で大文字と小文字が区別される場合はインデックスがよく使用されます。例えば。 db.contents.find({title:{$regex: /arnab/}, tags:{$regex: /Times/}})

さらに、containsの代わりにstarts with (Prefix Regex)の場合はさらに優れています。例えば。 db.contents.find({title:{$regex: /^arnab/}, tags:{$regex: /^Times/}})

関連する問題