Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / / /

如何索引数组元素

在此页面上

  • Atlas Search 如何索引数组元素?
  • 如何为数组中的对象建立索引?
  • 查看限制
  • 定义数组元素的索引
  • 对数组元素进行索引尝试示例

对于索引数组,Atlas Search 仅需要数组元素的数据类型。您不必在索引定义中指定数据包含在数组 ( [] ) 中。

如果启用动态映射,Atlas Search 会自动为数组内可动态索引数据类型的元素编制索引。要进一步了解 Atlas Search 动态索引的数据类型,请参阅 数据类型 。

您可以使用 Atlas 用户界面中的可视化编辑器JSON 编辑器来定义数组中元素的索引。

Atlas Search 通过在索引期间展平字段来对数组内支持的数据类型进行索引。

例子

请考虑以下文档:

doc1 = { a: {b: [[<value1>, <value2>], <value3>] }}
doc2 = { a: {b: [<value1>, <value2>, <value3>] } }
doc3 = { a: [{ b: <value1>}, {b: <value2>}, {b: <value3>}] }

Atlas Search 在索引期间将上面的数组展平,类似如下所示:

LuceneDoc<n> = {"a.b":[<value1>,<value2>,<value3>]}

要查询文档或对象数组中的字段,您必须使用 embeddedDocuments 类型来对包含对象数组的字段编制索引。

对于以下 Atlas Search 字段类型,如果其包含在数组中,或位于文档中,而该文档包含在数组中,则 Atlas Search 不会为这些字段类型编制索引:

  • dateFacet

  • numberFacet

要定义数组元素的索引,请在 Atlas 用户界面中选择您偏好的配置方法,然后选择数据库和集合。

  1. 单击 Refine Your Index 配置索引。

  2. Field Mappings 部分中,单击 Add Field Mapping 打开 Add Field Mapping 窗口。

  3. 单击 Customized Configuration(连接)。

  4. Field Name下拉列表中选择要索引的数组类型字段。

  5. 单击Data Type下拉列表,选择要建立索引的数组元素的数据类型。 要了解有关配置所选类型属性的更多信息,请参阅所选类型的文档。

  6. 单击 Add(连接)。

以下是用于索引数组内元素的 JSON语法。将默认索引定义替换为以下内容。

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<array-field-name>": {
6 "type": "<array-element-data-type>"
7 }
8 }
9 }
10}

以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。

以下索引定义对包含string值数组的 genres 字段进行索引。

  1. Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 genres

  2. 单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。

  3. 保留String Properties的默认设置。

  4. 单击 Add(连接)。

将默认索引定义替换为以下索引定义。

1{
2 "mappings": {
3 "fields": {
4 "genres": {
5 "type": "string"
6 }
7 }
8 }
9}

后退

2:定义字段映射