AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

クエリ最適化のインデックス

このページでは、 MongoDB PHPライブラリを使用してさまざまなタイプのインデックスを管理する方法を示すコピー可能なコード例を紹介します。

Tip

インデックスの操作の詳細については、「インデックスの考慮事項と管理ガイド」を参照してください。 このページに表示されているインデックスの詳細については、各セクションに提供されているリンクを参照してください。

To use an example from this page, copy the code example into the sample application or your own application. Make sure to set the MONGODB_URI environment variable to the connection string for your MongoDB deployment, and replace the <database> and <collection> placeholders with values for your target namespace.

次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。

  1. プロジェクトにMongoDB PHPライブラリがインストールされていることを確認してください。 MongoDB PHPライブラリのインストールの詳細については、 「ダウンロードとインストール」のガイドを参照してください。

  2. 次のコードをコピーし、新しい.phpファイルに貼り付けます。

  3. このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。

Tip

The require statement in the sample application loads the MongoDB PHP Library and assumes that the vendor directory is in the same directory as your application file. If your application file is located elsewhere, adjust the path to vendor/autoload.php accordingly.

1<?php
2
3require __DIR__ . '/../vendor/autoload.php';
4
5$uri = getenv('MONGODB_URI') ?: throw new RuntimeException('Set the MONGODB_URI variable to your Atlas URI that connects to the sample dataset');
6$client = new MongoDB\Client($uri);
7
8$collection = $client->selectCollection('<database>', '<collection>');
9
10// Start example code here
11
12// End example code here

一部の例では、 toJSON()関数を使用して、 BSONドキュメントである変更イベントを 拡張JSONとして表します。 この関数を使用するには、次のコードをアプリケーションファイルに貼り付けます。

function toJSON(object $document): string
{
return MongoDB\BSON\Document::fromPHP($document)->toRelaxedExtendedJSON();
}

次の例では、指定されたフィールドに昇順のインデックスを作成しています。

$indexName = $collection->createIndex(['<field name>' => 1]);

単一フィールドインデックスの詳細については、「単一フィールド インデックスガイド」を参照してください。

次の例では、指定されたフィールドに対して 2 つの昇順インデックスからなる複合インデックスを作成します。

$indexName = $collection->createIndex(
['<field name 1>' => 1, '<field name 2>' => 1],
);

複合インデックスの詳細については、「複合インデックス」のガイドを参照してください。

次の例では、指定された配列値フィールドに昇順のマルチキーインデックスを作成しています。

$indexName = $collection->createIndex(['<array field name>' => 1]);

マルチキー インデックスの詳細については、「 マルチキーインデックス」のガイドを参照してください。

次の例では、GeoJSONオブジェクト値を持つ指定されたフィールドに2 dsphereインデックスを作成します。

$indexName = $collection->createIndex(
['<GeoJSON object field>' => '2dsphere'],
);

GeoJSONデータ型の詳細については、 MongoDB Serverマニュアルの 「 GeoJSON オブジェクト」 を参照してください。

次の例では、指定されたフィールドに昇順のユニークインデックスを作成しています。

$indexName = $collection->createIndex(['<field name>' => 1], ['unique' => true]);

次の例では、コレクションに昇順のワイルドカードを作成しています。

$indexName = $collection->createIndex(['$**' => 1]);

指定されたデータベースに新しいコレクションを作成するときに、クラスター化インデックスを作成できます。 次の例では、 _idフィールドに昇順のクラスターインデックスを含む新しいコレクションを作成します。

$options = [
'clusteredIndex' => [
'key' => ['_id' => 1],
'unique' => true,
],
];
$database->createCollection('<collection name>', $options);

次の例では、指定された string フィールドにテキスト インデックスを作成します。

$indexName = $collection->createIndex(['<field name>' => 'text']);

次の例では、指定されたコレクション内のインデックスのリストを出力します。

foreach ($collection->listIndexes() as $indexInfo) {
echo $indexInfo;
}

次の例では、指定された名前のインデックスを 1 つ削除します。

$collection->dropIndex('<index name>');

インデックスの削除の詳細については、「 インデックスの考慮事項と管理ガイド」の「 インデックスの削除 」を参照してください。

次のセクションには、MongoDB Search および ベクトル検索 検索インデックスを管理する方法を説明するコード例が含まれています。

注意

MongoDB 検索する と MongoDB ベクトル検索 のインデックスマネジメントは非同期です

MongoDB PHPライブラリはMongoDB検索インデックスを非同期に管理します。次のセクションで説明されているライブラリ メソッドは、サーバー応答をすぐに返しますが、検索インデックスへの変更はバックグラウンドで行われ、しばらくが完了しないと完了しない可能性があります。

MongoDB 検索インデックスについて詳しく学ぶには、MongoDB 検索インデックス ガイドを参照してください。

次の例では、指定されたフィールドにMongoDB検索インデックスを作成します。

$indexName = $collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => '<Search index name>'],
);

次の例では、指定されたコレクション内のMongoDB 検索インデックスのリストを出力します。

foreach ($collection->listSearchIndexes() as $indexInfo) {
echo toJSON($indexInfo), PHP_EOL;
}

次の例では、指定された新しいインデックス定義で既存のMongoDB検索インデックスを更新します。

$collection->updateSearchIndex(
'<Search index name>',
['mappings' => [
'dynamic' => false,
'fields' => [
'<string field name>' => [
'type' => 'string',
'analyzer' => 'lucene.standard',
],
],
]],
);

次の例では、指定された名前のMongoDB検索インデックスを削除します。

$collection->dropSearchIndex('<Search index name>');