MySQL连接器/ c++
MySQL连接器库,适用于C和c++应用程序
索引文档集合

与关系表上的索引类似,可以在文档集合上定义索引,以提高访问集合中文档的效率。定义这样的索引调用X DevAPI方法收藏::方法createIndex ()或者X DevAPI for C函数mysqlx_collection_create_index ()并传递一个指定索引的JSON文档。索引规范文档的格式描述如下。索引可以在索引文档中包含一个或多个字段,并且可以指定索引字段是否必须始终存在。要使索引工作,文档中的值必须转换为SQL值。因此,您必须指定用于每个索引字段的SQL类型。

索引规范

一个索引规范示例可能如下所示:

“类型”:“指数”,
“字段”:[
{"field": "$.zip", "type": "TEXT(10)"},
{"field": "$. "count", "type": "INT UNSIGNED"}

文档集合上索引的规范是一个JSON文档,具有以下成员:

  • fields(对象数组):描述要包含在索引中的文档字段(见下文)
  • type(字符串,可选):索引的类型。"INDEX"或"SPATIAL"中的一个。默认值是"INDEX",可以省略。

单个字段描述由以下成员组成:

  • field(字符串):要索引的文档字段的路径。
  • type(字符串):将字段映射到的受支持的SQL列类型之一(参见下面的列表)。对于数字类型,后面可以跟着可选的UNSIGNED关键字。对于TEXT类型,必须指定用于索引的长度。
  • required(布尔值,可选):如果要求该字段在文档中存在,则为True。默认为false,除了GEOJSON,它默认为true
  • options(一个整数,可选):解码GEOJSON数据时使用的特殊选项标志(见下文)。
  • srid(一个整数,可选):解码GEOJSON数据时使用的“srid”值(见下文)。

在索引规范中包含上面没有描述的其他字段是错误的。

如果没有指定索引类型,或者将其设置为“index”,则使用SQL命令“CREATE index…”创建普通索引。如果索引类型设置为“SPATIAL”,则创建的索引类似于SQL命令“CREATE SPATIAL index…”创建的索引,参见https://dev.10bet靠谱mysql.com/doc/refman/8.0/en/spatial-index-optimization.html而且https://dev.10bet靠谱mysql.com/doc/refman/8.0/en/creating-spatial-indexes.html.在这种情况下,不允许在字段描述中将“required”字段设置为false。

索引字段的值使用标准的MySQL类型转换从JSON转换为索引字段描述中指定的类型https://dev.10bet靠谱mysql.com/doc/refman/8.0/en/type-conversion.html).注意,这意味着,例如,当在索引字段描述中使用数值类型而实际字段值非数值时,它通常会转换为0。

对于GEOJSON类型的索引字段,MySQL函数ST_GeomFromGeoJSON()用于转换(参见https://dev.10bet靠谱mysql.com/doc/refman/8.0/en/spatial-geojson-functions.html#function_st-geomfromgeojson).在这种情况下,“options”和“srid”字段可能出现在字段描述中,如果是这种情况,它们将在转换过程中用作ST_GeomFromGeoJSON()的参数。

字段数据类型

以下数据类型可用于文档字段。类型描述不区分大小写。

  • INT(无符号)
  • 非常小的整数(无符号)
  • 短整型(无符号)
  • MEDIUMINT(无符号)
  • 整型(无符号)
  • 长整型数字(无符号)
  • 真正的(无符号)
  • 浮动(无符号)
  • 双(无符号)
  • 小数(无符号)
  • 数字(无符号)
  • 日期
  • 时间
  • 时间戳
  • DATETIME
  • 文本(长度)
  • GEOJSON