0

外部エンジンを使用せずに、mongodbを使用してきめ細かい検索を実現するにはどうすればよいですか?このオブジェクトを例として取り上げます{ジャンル:'コメディ'、ページ:380、年:2013、ベストセラー:true、作成者:' John Doe'}

それは以下によって検索されています:

db.books.find({
  pages:      { '&gt': 100 },
  year:       { '&gt': 2000 },
  bestseller: true,
  author:     "John Doe"
});

これまでのところかなり簡単です。ここで、ドキュメントにもう少し値があり、より洗練された検索行っており、かなり大きなコレクションがあるとします。

私が最初にすることは、インデックスを作成することです。しかし、それはどのように機能しますか?ここで定義されているインデックス交差はhttps://jira.mongodb.org/browse/SERVER-3071では実行できないことを読みました。つまり、インデックスを「年」と「ページ」に設定した場合、検索でのAND演算は実際には最適化されません。

では、多くのパラメーターを持つように検索を最適化するにはどうすればよいでしょうか。

前もって感謝します。

4

1 に答える 1

0

mongodbの複合インデックスについて質問しているようです。複合インデックスを使用すると、ドキュメント内の複数のフィールドに単一のインデックスを作成できます。複合インデックスを作成することにより、インデックスを使用しながら、これらの大規模/複雑なクエリを作成できます。

より一般的な注意点として、選択性の高いフィールドに基本的なインデックスを作成すると、検索が非常に高速になる可能性があります。この例を使用すると、authorにインデックスがある場合、クエリエンジンはそのインデックスを使用して、author=="JohnDoe"であるすべてのエントリを検索します。おそらく、コレクション全体の本の数に比べて、その特定の著者の本はそれほど多くありません。したがって、クエリの残りの部分がかなり複雑な場合でも、一致する作成者が含まれるいくつかのドキュメントに対してのみ評価されます。したがって、インデックスを適切に構成することにより、複雑なインデックスを作成しなくても、パフォーマンスを大幅に向上させることができます。

于 2013-03-26T20:39:35.130 に答える