PHP Conference Japan 2024

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:字符串,要索引的文档成员或字段的完整文档路径。

  • 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