インデックスを作成する際に、インデックスにカスタム名を付けることができます。インデックスに名前を付けると、コレクションのさまざまなインデックスを区別するのに役立ちます。たとえば、インデックスに異なる名前が付いている場合は、クエリプランの explain の結果でクエリにより使用されるインデックスを、より簡単に識別できます。
インデックス名を指定するには、インデックスを作成するときに name オプションを含めます。
db.<collection>.createIndex( { <field>: <value> }, { name: "<indexName>" } )
このタスクについて
インデックス名を指定する前に、以下のことを考慮します。
インデックス名は一意である必要があります。既存のインデックス名を使用してインデックスを作成すると、エラーが返されます。
既存のインデックスの名前は変更できません。代わりに、インデックスを削除して新しい名前で再作成する必要があります。
デフォルトのインデックス名
インデックスの作成時に名前を指定しない場合、システムは各インデックス キー フィールドと値をアンダースコアで連結して名前を生成します。以下に例を挙げます。
Index | デフォルト名 |
|---|---|
|
|
|
|
|
|
|
|
手順
このページの例では、sample_mflixサンプルデータセットのデータを使用します。このデータセットを自己管理型MongoDB配置にロードする方法の詳細については、サンプルデータセットをロードする を参照してください。サンプルデータベースに変更を加えた場合、このページの例を実行するには、データベースを削除して再作成する必要がある場合があります。
name フィールドと text フィールドにテキストインデックスを作成します。インデックスname を CommentsTextIndex に設定します。
db.comments.createIndex( { name: "text", text: "text" }, { name: "CommentsTextIndex" } )
CommentsTextIndex
結果
インデックスを作成したら、db.collection.getIndexes() メソッドを使用してインデックス名を取得できます。
db.comments.getIndexes()
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { _fts: 'text', _ftsx: 1 }, name: 'CommentsTextIndex', weights: { name: 1, text: 1 }, default_language: 'english', language_override: 'language', textIndexVersion: 3 } ]
詳細
インデックスの作成方法については、「インデックスの作成」を参照してください。
インデックス プロパティの詳細については、「インデックス プロパティ」を参照してください。