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

MongoDB\Collection::createIndexes()

項目一覧

  • 定義
  • パラメーター
  • Return Values
  • エラーと例外
  • 動作
  • その他の参照
MongoDB\Collection::createIndexes()

コレクションに 1 つ以上のインデックスを作成します。

function createIndexes(
array $indexes,
array $options = []
): string[]
$indexes : 配列

コレクションに作成するインデックス。

たとえば、次の例では、username フィールドに一意のインデックスを指定し、email フィールドとcreatedAt フィールドに複合インデックスを指定します。

[
[ 'key' => [ 'username' => -1 ], 'unique' => true ],
[ 'key' => [ 'email' => 1, 'createdAt' => 1 ] ],
]
$options : 配列

必要なオプションを指定する配列。

名前
タイプ
説明
comment
混合

ユーザーが任意のコメントを指定して、 データベースプロファイラcurrentOp出力、ログから操作を追跡できるようにします。

このオプションは MongoDB 4.4 以降で使用可能であり、古いサーバー バージョンで指定すると実行時に例外が発生します。

バージョン 1.13 の新機能

commitQuorum
string|integer

プライマリがインデックスを準備完了とマークする前に、プライマリがインデックス ビルドを正常に完了する必要があるレプリカセットのデータを持つノードの数を指定します。

このオプションは、書込み保証(write concern)のwフィールドと"votingMembers"の同じ値を受け入れます。これは、投票権を持つデータを保持するすべてのノードを示します。

これは 4.4 より前のサーバー バージョンではサポートされていないため、使用された場合は実行時に例外が発生します。

バージョン 1.7 の新機能

maxTimeMS
integer

カーソルに対する情報処理操作の累積時間制限(ミリ秒単位)。 MongoDB は、次の割り込みポイントが最も近い時点で操作を中止します。

バージョン 1.3 で追加

セッション

操作に関連付けるクライアント セッション。

バージョン 1.3 で追加

writeConcern

操作に使用する書込み保証 ( write concern )。 コレクションの書込み保証 (write concern) のデフォルトです。

トランザクションの一部である個々の操作に対して書込み保証 (write concern) を指定することはできません。 代わりに 、トランザクションを開始する ときにwriteConcern オプションを設定します。

文字列の配列としての作成されたインデックスの名前。

MongoDB\Exception\UnsupportedExceptionオプションが使用され、選択したサーバーでサポートされていない場合(例: collationreadConcernwriteConcern )。

MongoDB\Exception\InvalidArgumentException は、パラメータまたはオプションの解析に関連するエラーの場合は です。

MongoDB\Driver\Exception\RuntimeException 拡張レベルのその他のエラー(例:)。

$indexesパラメータは、インデックス仕様ドキュメントの配列です。 $indexesの各要素は、 createIndex()$keyパラメータに対応するkeyフィールドを持つ配列またはオブジェクトである必要があります。 配列またはオブジェクトには、 createIndex()によって受け入れられるインデックス オプションに対応する他のフィールドが含まれる場合があります。 サポートされているインデックス作成オプションの完全なリストについては、MongoDB マニュアルのcreateIndexesコマンド リファレンスを参照してください。

たとえば、次の$indexesパラメータは 2 つのインデックスを作成します。 最初はusernameフィールドの昇順の一意のインデックスで、2 つ目はカスタム名を持つlocフィールドの 2dsphere インデックスです。

[
[ 'key' => [ 'username' => 1 ], 'unique' => true ],
[ 'key' => [ 'loc' => '2dsphere' ], 'name' => 'geo_index' ],
]

次の例では、 testデータベース内のrestaurantsコレクションに 2 つのインデックスを作成します。 1 つのインデックスはboroughcuisineフィールドの複合インデックスで、もう 1 つはカスタム名を持つlocフィールドの 2dsphere インデックスです。

<?php
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants');
$indexNames = $collection->createIndexes([
[ 'key' => [ 'borough' => 1, 'cuisine' => 1] ],
[ 'key' => [ 'loc' => '2dsphere'], 'name' => 'geo_index' ],
]);
var_dump($indexNames);

出力は次のようになります。

array(2) {
[0]=>
string(19) "borough_1_cuisine_1"
[1]=>
string(9) "geo_index"
}

戻る

createIndex()