翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
複合インデックス
複合インデックスは、ドキュメントのコレクション内の 2 つ以上のフィールドからの情報を保存し、最初のフィールドまたはプレフィックスフィールドに対するクエリを許可します。これらのインデックスは、複数のフィールドを同時にフィルタリングしたり、フィルタリングとソート操作を組み合わせたりするクエリのパフォーマンスを最適化します。また、左端のインデックス付きフィールドに対する単一条件クエリにも有効です。データベースは、これらのインデックスエントリを活用して、完全なコレクションスキャンを実行せずに、一致するドキュメントを効率的に見つけます。
複合フィールドインデックスは、次の場合に有益です。
-
複数のフィールドを同時にフィルタリングする必要があります。
-
フィルタリングとソートオペレーションを組み合わせる必要があります。
サポートされているインデックスプロパティ
| オプション | 3.6 | 4.0 | 5.0 | 8.0 | Elastic クラスター |
|---|---|---|---|---|---|
| name | はい | はい | はい | はい | はい |
| 一意 | はい | はい | はい | はい | はい |
| スパース * | はい | はい | はい | はい | はい |
| partialFilterExpression * | いいえ | なし | はい | はい | いいえ |
* sparseおよび partialFilterExpressionオプションは、同じインデックス定義で一緒に使用することはできません。これらのオプションを使用してインデックスを作成しようとすると、次のエラーで失敗します。
Error in specification: cannot mix partialFilterExpression and sparse options
複合インデックスの作成
createIndex() メソッドを使用して複合インデックスを作成します。メソッド構文は次のとおりです。 db.collection.createIndex(<keys>, <options>)
keys パラメータは、フィールドとインデックスのソート順序を指定する JSON ドキュメントです。
{ "<field 1>": <1 (ascending)|-1 (descending)>, "<field 2>": <1 (ascending)|-1 (descending)>, ... }
複合インデックスの配列には 1 つのフィールドしか使用できないことに注意してください。2 つ以上の配列フィールドに複合インデックスを作成しようとすると、次のエラーで失敗します。
multiple fields of compound index cannot be arrays
options パラメータは、インデックスのオプションを指定する JSON ドキュメントです。
{ "name": "<name>", "unique": <true | false>, "sparse": <true | false>, "partialFilterExpression": <filter expression> }
複合インデックスの作成例については、「インデックスプロパティ」を参照してください。