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입니다. 기본값이true
인GEOJSON
을 제외하고 기본값은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
}'
);