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: string,支持的 SQL 列类型之一,用于将字段映射到其中。对于数字类型,可选的 UNSIGNED 关键字可以跟在后面。对于 TEXT 类型,可以添加要考虑用于索引的长度。

  • 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");

// 创建文本索引
$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