“文档” 菜单
文档首页
/
MongoDB 阿特拉斯
/ / / /

如何为分面搜索的数值编制索引

在此页面上

  • 查看 numberFacet限制
  • numberFacet 类型定义索引
  • 配置 numberFacet 字段属性
  • numberFacet 类型使用示例

您可以使用 Atlas Search numberFacet类型,通过指定用于分面(Facet)的representation来为数值编制索引。您可以索引 BSON类型int32int64double的编号。

Atlas Search 仅支持对索引为numberFacet类型的字段进行查询。要对同一字段也执行普通搜索,您也必须按类型number对该字段进行索引。

要对嵌入式文档中的字符串字段进行分面,您必须将父字段作为文档类型进行索引。当您对嵌入式文档内的字符串字段进行分面时,Atlas Search 仅返回匹配父文档数量的分面计数。

Atlas Search 不会为分面(Facet)动态索引number值。您必须使用静态映射为分面(Facet)的number值建立索引。您可以使用 Atlas 用户界面中的可视化编辑器JSON 编辑器将日期字段索引为numberFacet类型。

适用以下限制:

  • 您无法为decimal128进行分面(Facet)索引。

  • 您无法为数组或数组中包含的文档中的数值进行分面(Facet)索引。

  • 您无法对作为embeddedDocuments字段一部分进行索引的数字字段进行分面(Facet)。

要定义 numberFacet 类型的索引,请在 Atlas UI 中选择您的首选配置方法,然后选择数据库和集合。

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

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

  3. Field Name 下拉菜单中选择要索引的字段。

    注意

    您无法对字段名称开头包含美元 ($) 符号的字段创建索引。

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

  5. 配置numberFacet类型的字段属性。要了解详情,请参阅字段属性

  6. 单击 Add(连接)。

以下是 numberFacet 类型的 JSON 语法。将默认索引定义替换为以下内容。要了解有关字段的更多信息,请参阅字段属性

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "numberFacet",
"representation": "int64|double",
"indexIntegers": true|false,
"indexDoubles": true|false
}
}
}
}

Atlas Search numberFacet 类型采用以下参数:

选项
类型
必要性
说明
默认
type
字符串
必需
字段的类型。值必须是numberFacet
representation
字符串
Optional

要索引的字段的数据类型。值可以是以下BSON类型之一:

  • int64 - 用于在不损失精度的情况下为大整数编制索引以及将双精度值舍入为整数。不能使用此类型来为大双精度值编制索引。

  • double - 用于为未经四舍五入的大双精度值编制索引。

要了解更多信息,请参阅下面的示例

double
indexIntegers
布尔
Optional
指示是对int32int64类型值编制索引还是省略索引编制。 值可以是truefalse 。 此值或indexDoubles必须为true
true
indexDoubles
布尔
Optional
指示是否对double类型值编制索引或省略索引编制。 值可以是truefalse 。 此值或indexIntegers必须为true
true

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

以下示例索引定义将year字段索引为 Atlas Search numberFacet类型,以支持使用 Atlas Search 分面(Facet)。对该字段进行查询

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

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

  3. 接受NumberFacet Properties的默认值。

  4. 单击 Add(连接)。

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

{
"mappings": {
"dynamic": false,
"fields": {
"year": {
"type": "numberFacet"
}
}
}
}

以下示例索引定义将year字段索引为numberFacetnumber类型,以返回以下类型的查询结果:

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

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

  3. 接受NumberFacet Properties的默认值。

  4. 单击 Add(连接)。

  5. 重复步骤1 ,然后从Data Type下拉列表中选择Number

  6. 接受Number Properties的默认值。

  7. 单击 Add(连接)。

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

{
"mappings": {
"dynamic": false,
"fields": {
"year": [
{
"type": "numberFacet"
},
{
"type": "number"
}
]
}
}
}

提示

另请参阅:其他索引定义示例

有关其他索引定义示例,请参阅以下页面:

后退

数字

来年

ObjectId