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

如何为数值创建索引

在此页面上

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

您可以使用Atlas Searchnumber 类型为具有int32 int64、 和double 数据类型数值的字段索引。您可以使用 equals 范围和 near 操作符来查询number 类型的索引字段。您还可以对 number类型字段运行分面(Facet)查询。

注意

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

Atlas Search 自动索引 2023 年 7 月之后创建的索引中的所有数字字段,以对 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. 单击 Customized Configuration(连接)。

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

    注意

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

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

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

  7. 单击 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 Option
类型
必要性
说明
默认

Data Type

type

字符串

必需

标识此字段类型的人类可读标签。值必须是 number

Representation

representation

字符串

Optional

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

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

  • double - 用于为未经四舍五入的大 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 字段中的小 double 类型值进行索引。

  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 中的 double 值。

  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