コレクションにインデックスを作成

# Collection::createIndex

(No version information available, might only be in Git)

Collection::createIndex — コレクションにインデックスを作成

### 説明

public function mysql_xdevapi\Collection::createIndex(string `$index_name`, string `$index_desc_json`): void

コレクションにインデックスを作成します。

指定された名前と同じインデックスが既に存在していた場合、 もしくはインデックスの定義が正しくなかった場合は、 例外がスローされます。

### パラメータ

`index_name`

  作成するインデックスの名前。 この名前は、 `CREATE INDEX` SQLクエリが受け入れられる、 正しいものでなければなりません。

`index_desc_json`

  作成するインデックスの定義。 IndexField オブジェクトの配列を含み、 個々のオブジェクトはインデックスに含まれる単一のドキュメントを記述します。 そして、オプションで、インデックスのタイプを示すオプションの文字列を含めます。 インデックスのタイプは、INDEX(デフォルト) または SPATIAL です。

  IndexField の記述は、以下のフィールドを含みます:

  - `field`: 文字列。インデックスされるドキュメンメンバまたはフィールドの完全なパス

  - `type`: 文字列。フィールドにマップされる、サポートされたSQLカラムの型のうちひとつ。 数値型のために、オプションで UNSIGNED を後ろに続けることができます。 テキスト型のために、インデックスのために考慮する長さを追加できます。

  - `required`: bool。 (オプション) フィールドがドキュメントで必須である場合、trueを指定します。 デフォルトは `false` です。 `GEOJSON` では例外的に、デフォルトが `true` です。

  - `options`: integer, (オプション) `GEOJSON` データをデコードする時に使う特別なのオプションフラグ

  - `srid`: integer, (オプション) `GEOJSON` データをデコードする時に使う srid の値

  IndexDefinition や IndexField に、上記で説明していないフィールドを含めるとエラーになります。

### 戻り値

### 例

例1 mysql_xdevapi\Collection::createIndex() の例

    <?php
    $session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
    $session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
    $session->sql("CREATE DATABASE addressbook")->execute();

    $schema     = $session->getSchema("addressbook");
    $collection = $schema->createCollection("people");

    // text index を作る
    $collection->createIndex(
      'myindex1',
      '{"fields": [{
        "field": "$.name",
        "type": "TEXT(25)",
        "required": true}],
        "unique": false}'
    );

    // spatial インデックスを作る
    $collection->createIndex(
      'myindex2',
      '{"fields": [{
        "field": "$.home",
        "type": "GEOJSON",
        "required": true}],
        "type": "SPATIAL"}'
    );

    // 複数のフィルードを持つインデックス
    $collection->createIndex(
      'myindex3',
      '{"fields": [
        {
          "field": "$.name",
          "type": "TEXT(20)",
          "required": true
        },
        {
          "field": "$.age",
          "type": "INTEGER"
        },
        {
          "field": "$.job",
          "type": "TEXT(30)",
          "required": false
        }
      ],
      "unique": true
      }'
    );

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open