MongoDB\Collection::createIndex()
定義
パラメーター
$key
: array|objectインデックスを作成するフィールドとインデックスの順序を指定します。
たとえば、次の例では、
username
フィールドに降順のインデックスを指定しています。[ 'username' => -1 ] $options
: 配列必要なオプションを指定する配列。
$options
パラメータは、インデックス オプションとコマンド オプションの両方を受け入れます。 インデックス オプションの非網羅的なリストは次のとおりです。 インデックス オプションの完全なリストについては、MongoDB マニュアルの createIndexesコマンドに関する参考資料を参照してください。インデックス オプション(非排他的)
collationarray|object照合順序を指定すると、大文字や小文字、アクセント記号など、string を比較するための言語独自のルールを指定できます。 照合を指定する場合、
locale
フィールドは必須です。その他の照合フィールドはすべてオプションです。 フィールドの説明については、 「照合ドキュメント」 を参照してください。照合が指定されていないが、コレクションにデフォルトの照合がある場合、操作はコレクションに指定された照合を使用します。 コレクションにも操作にも照合が指定されていない場合、MongoDB では以前のバージョンで使用されていた単純なバイナリ比較によって string が比較されます。
expireAfterSecondsintegerTTLインデックスを作成します。namestringインデックスを一意に識別する名前。 デフォルトでは、MongoDB は キーに基づいてインデックス名を作成します。部分フィルター式array|object部分インデックスを作成します。sparseブール値スパースインデックスを作成します。uniqueブール値一意のインデックスを作成します。コマンド オプション
名前タイプ説明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
作成されたインデックスの名前を string として表します。
エラーと例外
MongoDB\Exception\UnsupportedException
オプションが使用され、選択したサーバーでサポートされていない場合(例: collation
、 readConcern
、 writeConcern
)。
MongoDB\Exception\InvalidArgumentException
は、パラメータまたはオプションの解析に関連するエラーの場合は です。
MongoDB\Driver\Exception\RuntimeException 拡張レベルのその他のエラー(例:)。
例
複合インデックスの作成
次の例では、 borough
cuisine
restaurants
データベースのtest
コレクション内の フィールドと フィールドに 複合インデックス を作成します。
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants'); $indexName = $collection->createIndex(['borough' => 1, 'cuisine' => 1]); var_dump($indexName);
出力は次のようになります。
string(19) "borough_1_cuisine_1"
部分インデックスの作成
次の例では、 test
データベースのrestaurants
コレクションのborough
フィールドに部分インデックスを追加します。 部分インデックスは、 borough
フィールドが存在するドキュメントのみをインデックスします。
$collection = (new MongoDB\Client)->selectCollection('test', 'restaurants'); $indexName = $collection->createIndex( ['borough' => 1], [ 'partialFilterExpression' => [ 'borough' => ['$exists' => true], ], ] ); var_dump($indexName);
出力は次のようになります。
string(9) "borough_1"
その他の参照
MongoDB マニュアルのcreateIndexesコマンドに関する参考資料
MongoDB マニュアルのインデックスに関するドキュメント