您可以使用MongoDB Search stringFacet 类型为 字符串字段索引以进行分面,这样您就可以对该字段运行分面(Facet)操作符查询。MongoDB Search 在为分面索引string 字段时不应用分析器。
MongoDB Search 仅支持对索引为 stringFacet 类型的字段进行分面(Facet)操作符查询。要对同一字段也执行普通搜索,您也必须按类型 string 对该字段索引。
要对嵌入式文档中的字符串字段进行分面(Facet),您必须将父字段作为文档类型索引。当您对嵌入式文档内的字符串字段进行分面(Facet), MongoDB Search 仅返回匹配父文档数量的分面(Facet)计数。
MongoDB Search 不会为分面动态索引string 值。您必须使用静态映射为分面的 string 值索引。您可以使用Atlas用户界面中的可视化编辑器或JSON编辑器将 string 字段索引为 number 类型。
为 stringFacet 类型定义索引
要定义 stringFacet 类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。
单击 Refine Your Index 配置索引。
在 Field Mappings 部分中,单击 Add Field Mapping 打开 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
从 Field Name 下拉菜单中选择要索引的字段。
注意
您无法对字段名称开头包含美元 (
$) 符号的字段创建索引。单击Data Type下拉列表并选择StringFacet 。 要了解有关此类型的更多信息,请参阅字段属性。
单击 Add(连接)。
以下是 stringFacet 类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性。
{ "mappings": { "dynamic": true|false, "fields": { "<field-name>": { "type": "stringFacet" } } } }
配置 stringFacet 类型的属性
MongoDB Search stringFacet 类型具有以下参数:
用户界面字段名称 | JSON Option | 类型 | 必要性 | 说明 |
|---|---|---|---|---|
Data Type |
| 字符串 | 必需 | 标识此字段类型的人类可读标签。值必须是 |
尝试 stringFacet 类型的示例
以下索引定义示例使用 sample_mflix.movies 集合。如果您的集群上已加载示例数据,则可以使用 Atlas 用户界面中的可视化编辑器或 JSON 编辑器来配置索引。选择首选配置方法后,选择数据库和集合并优化索引以添加字段映射。
样本数据集中sample_mflix.moviescollection的以下索引定义将genres字段索引为stringFacet以进行分面(Facet)。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 genres。
单击 Data Type(添加数据)下拉列表并选择 StringFacet(插入文档)。
单击 Add(连接)。
{ "mappings": { "dynamic": false, "fields": { "genres": { "type": "stringFacet" } } } }
示例数据集中 sample_mflix.movies 集合的以下索引定义将 genres 字段索引为 stringFacet 和 string 类型,从而为查询返回以下类型的结果:
使用MongoDB Search
facet(MongoDB Search Operator)进行查询的元数据结果。
在 Add Field Mapping 窗口中,从 Field Name 下拉列表中选择 genres。
单击 Data Type(添加数据)下拉列表并选择 StringFacet(插入文档)。
单击 Add(连接)。
重复步骤 1,并从 Data Type 下拉列表中选择 String。
查看 String Properties 的默认设置,然后单击 Add。
{ "mappings": { "dynamic": false, "fields": { "genres": [ { "type": "stringFacet" }, { "type": "string" } ] } } }
了解详情
要了解有关 facet 收集器的更多信息并查看示例查询,请参阅示例。
要学习;了解如何使用分面(Facet)定义创建索引并使用 facet 收集器查询该索引,请参阅如何在MongoDB Search 中使用分面教程。
对于使用 stringFacet 运行带分页结果的分面搜索,如要查看索引和查询示例,请参阅在分页结果中使用分面。