2016-09-26 9 views
3

は、私は以下の例にmyFieldのようなフィールドを持っているそのうちのいくつかの文書、数百万でコレクションを持っていると言う:フィールドの存在のためのMongoDBインデックス?

{ 
    ... 
    myField: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse suscipit, lectus pharetra sodales cursus, purus nunc tristique urna, vel bibendum purus nisl non ipsum. Aenean porta porttitor mauris, vitae bibendum augue luctus vitae. Fusce non posuere quam. Mauris bibendum elit orci, et pretium quam faucibus sit amet. Vivamus nec congue sem, in commodo nisi. Pellentesque dapibus neque eget sem elementum, non pellentesque erat sagittis. Morbi et scelerisque orci. Etiam sed augue orci. Aliquam feugiat, arcu non aliquet sagittis, ante enim lacinia purus, quis lacinia leo leo id diam. Curabitur rutrum, eros in gravida efficitur, justo sem finibus dui, at lacinia nulla neque non nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse suscipit, lectus pharetra sodales cursus, purus nunc tristique urna, vel bibendum purus nisl non ipsum. Aenean porta porttitor mauris, vitae bibendum augue luctus vitae. Fusce non posuere quam. Mauris bibendum elit orci, et pretium quam faucibus sit amet. Vivamus nec congue sem, in commodo nisi. Pellentesque dapibus neque eget sem elementum, non pellentesque erat sagittis. Morbi et scelerisque orci. Etiam sed augue orci. Aliquam feugiat, arcu non aliquet sagittis, ante enim lacinia purus, quis lacinia leo leo id diam. Curabitur rutrum, eros in gravida efficitur, justo sem finibus dui, at lacinia nulla neque non nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse suscipit, lectus pharetra sodales cursus, purus nunc tristique urna, vel bibendum purus nisl non ipsum. Aenean porta porttitor mauris, vitae bibendum augue luctus vitae. Fusce non posuere quam. Mauris bibendum elit orci, et pretium quam faucibus sit amet. Vivamus nec congue sem, in commodo nisi. Pellentesque dapibus neque eget sem elementum, non pellentesque erat sagittis. Morbi et scelerisque orci. Etiam sed augue orci. Aliquam feugiat, arcu non aliquet sagittis, ante enim lacinia purus, quis lacinia leo leo id diam. Curabitur rutrum, eros in gravida efficitur, justo sem finibus dui, at lacinia nulla neque non nulla.", 
    ... 
} 

私はフィールドmyFieldが存在するレコードを返すクエリを実行できるようにしたいと思います。私はmyFieldにインデックスを作成することでこれを行うことができますが、インデックスはかなり大きく、実際にはフィールドの存在をチェックしているので実際には十分に活用されていません。

フィールドが存在するかどうかをチェックするためにのみ使用されるインデックスを作成する方法はありますか(値の一致はありません)。私はpartial indexesを調べましたが、興味深いものの、ここでどのように適用するかはわかりません。

+0

なぜ$ exists演算子を使用していないのですか? – Sachin

+0

@Sachin - 何をする?明確にするために - フィールドが存在するレコードを照会する方法を尋ねるのではありません。この質問は、データを照会するのではなく、索引の内容に固有です。 –

+0

Afaikでは、大きなインデックスを持たない場合は、auxブール値フィールドを作成します(myFieldが存在する場合はtrue、そうでない場合はfalse)。次にインデックスを作成します。これらのクエリは、代わりにブール値フィールドをターゲットにする必要があります。 – joao

答えて

0

お探しのとおりですか?Sparse indexes

+0

MongoDBの現在のバージョンで部分的なインデックスを使用することをお勧めします。それは、私が探しているものではありませんが、非常に小さな改善をもたらすかもしれません。 –

関連する問題