Collection::createIndex

(사용 가능한 버전 정보가 없으며 Git에만 있을 수 있음)

Collection::createIndex — 컬렉션 인덱스 생성


설명

public 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: string, 인덱싱할 문서 멤버 또는 필드에 대한 전체 문서 경로.
  • type: 문자열, 필드를 매핑할 지원되는 SQL 열 유형 중 하나입니다. 숫자 유형의 경우 선택적 UNSIGNED 키워드가 뒤에 올 수 있습니다. TEXT 유형의 경우 인덱싱을 위해 고려할 길이가 추가될 수 있습니다.
  • required: bool, (선택 사항) 문서에 필드가 있어야 하는 경우 true입니다. 기본값이 trueGEOJSON을 제외하고 기본값은 false입니다.
  • options: 정수, (선택 사항) GEOJSON 데이터를 디코딩할 때 사용할 특수 옵션 플래그.
  • srid: 정수, (선택 사항) GEOJSON 데이터를 디코딩할 때 사용할 srid 값.

IndexDefinition 또는 IndexField 문서에서 위에서 설명하지 않은 다른 필드를 포함하는 것은 오류입니다.


반환 값

CollectionAdd 개체입니다. execute()를 사용하여 영향을 받는 항목 수, 작업에 의해 생성된 수 경고를 쿼리하거나 삽입된 문서에 대해 생성된 ID 목록을 가져오는 데 사용할 수 있는 결과를 반환합니다.


Examples

예제 #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");

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

// A spatial index
$collection->createIndex(
  'myindex2',
  '{"fields": [{
    "field": "$.home",
    "type": "GEOJSON",
    "required": true}],
    "type": "SPATIAL"}'
);

// Index with multiple fields
$collection->createIndex(
  'myindex3',
  '{"fields": [
    {
      "field": "$.name",
      "type": "TEXT(20)",
      "required": true
    },
    {
      "field": "$.age",
      "type": "INTEGER"
    },
    {
      "field": "$.job",
      "type": "TEXT(30)",
      "required": false
    }
  ],
  "unique": true
  }'
);