对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

如何索引数组元素

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

If you enable dynamic mappings, MongoDB Search automatically indexes elements of dynamically indexable data types inside the array. To learn more about the data types that MongoDB Search dynamically indexes, see MongoDB Search Field Types.

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

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

例子

请考虑以下文档:

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

在索引期间, MongoDB Search 将前面的数组展平,如下所示:

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

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

要定义数组元素的索引,请在 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}