PHP Conference Japan 2024

Collection::createIndex

(沒有版本資訊,可能只在 Git 中)

Collection::createIndex建立集合索引

說明

public mysql_xdevapi\Collection::createIndex(字串 $index_name, 字串 $index_desc_json): void

在集合上建立索引。

如果已存在同名索引,或索引定義格式不正確,則會擲出例外。

參數

index_name

要建立的索引名稱。此名稱必須是 CREATE INDEX SQL 查詢可接受的有效索引名稱。

index_desc_json

要建立索引的定義。它包含一個 IndexField 物件陣列,每個物件描述要包含在索引中的單個文件成員,以及一個可選的字串,用於指定索引類型,可以是 INDEX(預設值)或 SPATIAL(空間索引)。

單個 IndexField 描述包含以下欄位:

  • field:字串,文件的完整路徑,指向要建立索引的文件成員或欄位。

  • type:字串,支援的 SQL 資料行類型之一,用於映射欄位。對於數值類型,可以選擇性地加上 UNSIGNED 關鍵字。對於 TEXT 類型,可以添加要考慮索引的長度。

  • required:布林值,(選用)如果欄位必須存在於文件中,則為 true。預設值為 false,但 GEOJSON 類型除外,其預設值為 true

  • options:整數,(選用)解碼 GEOJSON 資料時使用的特殊選項標記。

  • srid:整數,(選用)解碼 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");

// 建立文字索引
$collection->createIndex(
'myindex1',
'{"fields": [{
"field": "$.name",
"type": "TEXT(25)",
"required": true}],
"unique": false}'
);

// 空間索引
$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
}'
);
新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top