インデックスの管理
インデックスは、クエリのパフォーマンスを向上させる特別なデータ構造です。インデックスは、コレクションのデータの一部を簡単に走査できる形式で保存します。 インデックスには、特定のフィールドまたはフィールド セットの値が、フィールド値の順に保存されます。
クエリのパフォーマンスを向上させるには、フィールド順でソートする操作やクエリで頻繁に表示されるフィールドにインデックスを構築します。
インデックス付きフィールドに対するクエリでは、インデックスを使用して、一致するドキュメントを見つけるためにスキャンする必要があるドキュメントの数を制限できます。
インデックス付きフィールドでソート操作を行うと、インデックス順で事前にソートされたドキュメントが返される場合があります。
インデックスの詳細については、「インデックス」を参照してください。
注意
Considerations
インデックスは、書き込み操作の動作に悪影響を与えます。書き込みと読み取りの比率が高いコレクションでは、挿入のたびにすべてのインデックスを更新する必要があるため、インデックスの使用コストは高くなります。インデックスに関する考慮事項の詳細なリストについては、「インデックスの運用上の考慮事項」を参照してください。
Indexes Tab
Indexesタブには、コレクションの既存のインデックスが一覧表示されます。
コレクションの Indexes タブにアクセスするには、左側のペインでコレクションをクリックし、 Indexes タブを選択します。
各インデックスについて、Compass では次の情報が表示されます。
名称と定義 | インデックスとキーの名前。 |
タイプ | 通常のインデックス、テキスト インデックス、地理空間インデックス、またはハッシュされたインデックス。 |
サイズ | インデックスの大きさ。 |
使用法 | インデックスが作成された時点、またはサーバーが最後に再起動された時点から、インデックスが lookup で使用された回数。 |
プロパティ | インデックスの特殊なプロパティ(一意性、部分性など)。 |
インデックスの作成
インデックス作成ダイアログを開く
[インデックス] タブで、[Create Index] ボタンをクリックします。
インデックスにフィールドを追加する
インデックス キーを指定します。
既存のドキュメントフィールドをインデックス キーとして指定するには、ドロップダウンリストからフィールドを選択します。
どのドキュメントにも存在しないフィールドをインデックス キーとして指定するには、入力ボックスにフィールド名を入力します。
複合インデックスを作成するには、[インデックス タイプ] ドロップダウンの横にあるアイコンをクリックします。
各フィールド名の右側にあるドロップダウンを使用して、インデックス タイプを指定します。次のいずれかのタイプを指定できます。
上昇
下降
2dsphere
Text
オプション。 インデックス オプションの指定
Compass は次のインデックス オプションをサポートしています。
オプション | 説明 | 詳細情報 | ||||
---|---|---|---|---|---|---|
ユニークインデックスの作成 | インデックス フィールドに重複する値が格納されていないことを確認します。 | |||||
インデックス名 | インデックスの名前を指定します。 | |||||
TTL インデックスを作成 | インデックス化されたフィールド値から指定された秒数が経過すると、ドキュメントが自動的に削除されます。 | |||||
部分フィルター式 | 指定されたフィルター式に一致するドキュメントのみをインデックスします。 以下に例を挙げます。 次の部分フィルタ式は、
| |||||
ワイルドカード プロジェクション(MongoDB 4.2 の新機能) | インデックス内の指定されたプロジェクションと一致する未知のフィールドまたは任意のフィールドをサポートします。ワイルドカード プロジェクションを使用するには、インデックス フィールド名を 以下に例を挙げます。 次のワイルドカード プロジェクションのドキュメントを検討します。
インデックス フィールド名が | |||||
カスタム照合の使用 | テキストボックスに照合ドキュメントを入力するか貼り付けて、インデックスのカスタム照合を作成します。 |
Atlas Search インデックスの作成
Atlas Search インデックスを使用すると、Atlas Search 内のデータをクエリできます。詳細については、「Atlas Search インデックスの作成と管理」を参照してください。
Atlas Vector Search インデックスの作成
Atlas Vector Search インデックスを使えば、ベクトルデータおよびその他のデータ型にインデックスを付けることができ、インデックスされたフィールドのセマンティック検索が容易になります。詳細については、 「Atlas Vector Search インデックスの作成」を参照してください。
ワイルドカード インデックスの作成
バージョン 4.2 の新機能。
不明なフィールドや任意のフィールドに対するクエリをサポートするには、ワイルドカード インデックスを作成します。Compass でワイルドカード インデックスを作成するには、ワイルドカード インデックス フィールド(<field>.$**
)を Select a field name 入力に手動で入力します。
例
ドキュメントにuserMetadata
オブジェクトが含まれるコレクションを検討します。userMetadata
オブジェクト内のフィールドはドキュメントによって異なる場合があります。
userMetadata
にワイルドカード インデックスを作成して、オブジェクト内のすべての潜在的なフィールドを考慮することができます。Select a field name入力に次の内容を入力します。
userMetadata.$**
ワイルドカード インデックスのタイプ(ascending
またはdescending
)を指定して、 Create Indexをクリックします。
Compass は新しいインデックスのタイプをWildcardとして表示します。
インデックスの非表示または再表示
クエリ プランナーからインデックスを非表示にすると、実際にインデックスを削除せずに、インデックスを削除した場合の潜在的な影響を評価できます。
インデックスの削除
インデックスを削除するには、ゴミ箱アイコンをクリックします。
[インデックス] タブからインデックスを削除するには、そのインデックスのごみ箱アイコンをクリックします。確認ダイアログが表示されます。
制限
MongoDB Compass Readonly Editionではインデックスの作成、非表示、および削除は許可されていません。
Data Lake に接続している場合、Indexes タブは使用できません。
配置がローカルで、Atlas クラスター階層が M10 以上で、MongoDB 7.0 以上を実行している場合は、Compass で Atlas Search インデックスを管理できます。
Tip
以前のバージョンの MongoDB が動作しているクラスターの場合は、Atlas UI、 Atlas CLI 、またはAtlas Administration API を使用して Atlas Search インデックスを管理できます。