Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル

インデックスを使用したクエリの最適化

項目一覧

  • Overview
  • サンプル アプリケーション
  • 単一フィールド インデックス
  • 複合インデックス
  • Multikey Index
  • 地理空間インデックス
  • ユニークインデックス
  • ワイルドカード インデックス
  • クラスター化されたインデックス
  • Text Index
  • インデックスをリストする
  • インデックスの削除
  • Atlas Search インデックス マネジメント
  • 検索インデックスを作成
  • 検索インデックスをリストする
  • 検索インデックスを更新
  • 検索インデックスを削除

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

Tip

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

このページの例を使用するには、コード例をサンプルアプリケーションまたは 独自のアプリケーションにコピーします。 MONGODB_URI配置の接続string には、{4MongoDB 環境変数を必ず設定し、<database><collection> のプレースホルダーをターゲット名前空間の値に置き換えます。

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

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

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

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

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>');

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

次のセクションには、 Atlas Search インデックスを管理する方法を説明するコード例が含まれています。

注意

Atlas Search インデックス管理は非同期

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

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

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

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

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

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

次の例では、指定された新しいインデックス定義で既存の Atlas Search インデックスをアップデートします。

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

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

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

戻る

データ集計