私のコレクションには6つのインデックスフィールドがあります。私のアプリは、さまざまな組み合わせの集約クエリを使用します。いくつかの例があります:MongoDBの複合インデックスの理解
1. {$match: {$and: [{field1: {$in: [1,2,3]}}, {$field5: {$gt: 8}}]}}
2. {$match: {$and: [{field2: {$nin: [4,5,6]}}, {$field5: {$lte: 8}}, {$field6: 5}]}}
3. {$match: {field1: {$in: [7,8,9]}}}
前述のとおり、すべてのフィールドにインデックスが付けられています。私が初めてクエリを実行しているときに、の説明()関数は、1つのインデックスだけが使用されていることを通知します。クエリのフィールド数は、ユーザーの選択に依存します。 {field1:1、field2:1}、{field1:1、field2:1、field3:1}など)のインデックスのすべてを作成する必要がありますか、 {field1:1、field2:1、field3:1、field4:1、field5:1、field6:1}のようなすべてのフィールドの複合インデックス?
6フィールドの組み合わせが非常に多いので、最初の決定はちょっと変わったと思います。
ありがとうございます。一般的な問題は、私のアプリがフィールドのすべての組み合わせを使用しているということです。私のクエリには常にフィールドの組み合わせがないということです。 – vadimb
その場合は、各フィールドを個別に索引付けすることをお勧めします。もちろん、これは書き込みパフォーマンスに影響します。あるいは、これらのフィールドにテキストデータが含まれている場合、すべてのフィールドにテキストインデックスを使用できます。 https://docs.mongodb.com/manual/core/index-text/#wildcard-text-indexes – Kiril
別の提案を提供 – Kiril