インデックス名の指定
インデックスを作成する際に、インデックスにカスタム名を付けることができます。インデックスに名前を付けると、コレクションのさまざまなインデックスを区別するのに役立ちます。たとえば、インデックスに異なる名前が付いている場合は、クエリプランの explain の結果でクエリにより使用されるインデックスを、より簡単に識別できます。
インデックス名を指定するには、インデックスの作成時に name
オプションを含めます。
db.<collection>.createIndex( { <field>: <value> }, { name: "<indexName>" } )
このタスクについて
インデックス名を指定する前に、以下のことを考慮します。
インデックス名は一意である必要があります。既存のインデックス名を使用してインデックスを作成すると、エラーが返されます。
既存のインデックスの名前は変更できません。代わりに、インデックスを削除して新しい名前で再作成する必要があります。
デフォルトのインデックス名
インデックスの作成時に名前を指定しない場合、システムは各インデックス キー フィールドと値をアンダースコアで連結して名前を生成します。以下に例を挙げます。
Index | デフォルト名 |
---|---|
{ score : 1 } | score_1 |
{ content : "text", "description.tags": "text" } | content_text_description.tags_text |
{ category : 1, locale : "2dsphere"} | category_1_locale_2dsphere |
{ "fieldA" : 1, "fieldB" : "hashed", "fieldC" : -1 } | fieldA_1_fieldB_hashed_fieldC_-1 |
手順
blog
コレクションには、ブログ投稿とユーザー インタラクションに関するデータが含まれています。
content
、 users.comments
、 users.profiles
フィールドにテキスト インデックスを作成します。インデックス name
を InteractionsTextIndex
に設定します。
db.blog.createIndex( { content: "text", "users.comments": "text", "users.profiles": "text" }, { name: "InteractionsTextIndex" } )
結果
インデックスを作成したら、db.collection.getIndexes()
メソッドを使用してインデックス名を取得できます。
db.blog.getIndexes()
出力:
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { _fts: 'text', _ftsx: 1 }, name: 'InteractionsTextIndex', weights: { content: 1, 'users.comments': 1, 'users.profiles': 1 }, default_language: 'english', language_override: 'language', textIndexVersion: 3 } ]
詳細
インデックスの作成方法については、「インデックスの作成」を参照してください。
インデックス プロパティの詳細については、「インデックス プロパティ」を参照してください。