(No version information available, might only be in Git)
Collection::createIndex — コレクションにインデックスを作成
コレクションにインデックスを作成します。
指定された名前と同じインデックスが既に存在していた場合、 もしくはインデックスの定義が正しくなかった場合は、 例外がスローされます。
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
  }'
);