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

如何为数值创建索引

在此页面上

  • number 类型定义索引
  • 配置 number 字段属性
  • number 类型使用示例

您可以使用 Atlas Search number类型为具有int32int64double数据类型数值的字段建立索引。您可以使用 equalsrangenear操作符来查询number类型的索引字段。

注意

要查询数组中的数值,只能使用 range 操作符。

Atlas Search 不会自动为分面数值编制索引。相反,必须使用 numberFacet 对这些数值编制索引,才能对数值字段运行分面查询。

Atlas Search 自动为7 月2023之后创建的索引中的所有数字字段编制索引,用于对 Atlas Search 结果进行排序。对于先前存在的索引,必须重建索引才能使用索引中的数字字段进行排序。要了解更多信息,请参阅更新现有索引并对Atlas Search 结果进行排序。

如果您启用动态映射,Atlas Search 会自动为 number 类型的字段创建索引。您可以使用 Atlas UI 中的可视化编辑器JSON 编辑器为字段编制 number 类型的索引。

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

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

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

    注意

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

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

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

  6. 单击 Add(连接)。

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

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

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

用户界面字段名称
JSON 选项
类型
必要性
说明
默认
Data Type
type
字符串
必需
标识此字段类型的人类可读标签。值必须是 number
Representation
representation
字符串
Optional

要编制索引的字段的数据类型。值为:

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

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

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

double
Index Integers
indexIntegers
布尔
Optional
指示是否对 int32int64 类型值编制索引或省略索引编制的标记。值可以是 truefalse。无论此类型值还是 indexDoubles 都必须为 true。如要了解更多信息,请参阅下方的示例
true
Index Doubles
indexDoubles
布尔
Optional
指示是否对 double 类型值编制索引或省略索引编制的标记。值可以是 truefalse。无论此类型值还是 indexIntegers 都必须为 true。要了解更多信息,请参阅下面的示例
true

以下索引定义示例在样本数据中使用了多个集合。如果集群上已加载示例数据,则可以使用可视化编辑器和JSON编辑器来配置这些索引。选择首选配置方法后,选择数据库和集合,并优化索引以添加字段映射。

示例数据集sample_analytics.accounts 集合的以下索引定义使用 64 位整数值对 account_id 字段进行索引。以下示例还:

  • account_id 字段中的所有其他整数值进行索引。

  • 对任何十进制值进行四舍五入,并对 account_id 字段中的小双精度类型值进行索引。

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

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

  3. 修改 Number Properties 以设置以下内容:

    • Representationint64

    • Index Integerstrue

    • Index Doublestrue

  4. 单击 Add(连接)。

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

{
"mappings": {
"dynamic": false,
"fields": {
"account_id": {
"type": "number",
"representation": "int64"
}
}
}
}

样本数据集中sample_analytics.accounts集合的以下索引定义对整数值进行索引,并省略account_id中的双精度值。

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

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

  3. 修改 Number Properties 以设置以下内容:

    • Representationint64

    • Index Integerstrue

    • Index Doublesfalse

  4. 单击 Add(连接)。

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

{
"mappings": {
"dynamic": false,
"fields": {
"account_id": {
"type": "number",
"representation": "int64",
"indexDoubles": false
}
}
}
}

样本数据集中sample_airbnb.listingsAndReviews集合的以下索引定义为double类型值编制索引,并省略bathrooms字段中的32位和64位整数值。

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

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

  3. 修改 Number Properties 以设置以下内容:

    • Representationdoubles

    • Index Integersfalse

    • Index Doublestrue

  4. 单击 Add(连接)。

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

{
"mappings": {
"dynamic": false,
"fields": {
"bathrooms": {
"type": "number",
"indexIntegers": false
}
}
}
}

后退

knnVector

来年

numberFacet