MongoDB\Collection::createIndexes()
定義
パラメーター
$indexes
: 配列コレクションに作成するインデックス。
たとえば、次の例では、
username
フィールドに一意のインデックスを指定し、email
フィールドとcreatedAt
フィールドに複合インデックスを指定します。[ [ 'key' => [ 'username' => -1 ], 'unique' => true ], [ 'key' => [ 'email' => 1, 'createdAt' => 1 ] ], ] $options
: 配列必要なオプションを指定する配列。
名前タイプ説明comment混合ユーザーが任意のコメントを指定して、 データベースプロファイラ、 currentOp出力、ログから操作を追跡できるようにします。
このオプションは MongoDB 4.4 以降で使用可能であり、古いサーバー バージョンで指定すると実行時に例外が発生します。
バージョン 1.13 の新機能。
commitQuorumstring|integerプライマリがインデックスを準備完了とマークする前に、プライマリがインデックス ビルドを正常に完了する必要があるレプリカセットのデータを持つノードの数を指定します。
このオプションは、書込み保証(write concern)の
w
フィールドと"votingMembers"
の同じ値を受け入れます。これは、投票権を持つデータを保持するすべてのノードを示します。これは 4.4 より前のサーバー バージョンではサポートされていないため、使用された場合は実行時に例外が発生します。
バージョン 1.7 の新機能。
maxTimeMSintegerカーソルに対する情報処理操作の累積時間制限(ミリ秒単位)。 MongoDB は、次の割り込みポイントが最も近い時点で操作を中止します。
バージョン 1.3 で追加。
セッション操作に関連付けるクライアント セッション。
バージョン 1.3 で追加。
writeConcern操作に使用する書込み保証 ( write concern )。 コレクションの書込み保証 (write concern) のデフォルトです。
トランザクションの一部である個々の操作に対して書込み保証 (write concern) を指定することはできません。 代わりに 、トランザクションを開始する ときに
writeConcern
オプションを設定します。
Return Values
文字列の配列としての作成されたインデックスの名前。
エラーと例外
MongoDB\Exception\UnsupportedException
オプションが使用され、選択したサーバーでサポートされていない場合(例: collation
、 readConcern
、 writeConcern
)。
MongoDB\Exception\InvalidArgumentException
は、パラメータまたはオプションの解析に関連するエラーの場合は です。
MongoDB\Driver\Exception\RuntimeException 拡張レベルのその他のエラー(例:)。
動作
$indexes
parameter
$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 つのインデックスはborough
とcuisine
フィールドの複合インデックスで、もう 1 つはカスタム名を持つloc
フィールドの 2dsphere インデックスです。
$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" }
その他の参照
MongoDB マニュアルのcreateIndexesコマンドに関する参考資料
MongoDB マニュアルのインデックスに関するドキュメント