Docs 菜单

Docs 主页启动和管理 MongoDBMongoDB Atlas

如何对日期和数值字段运行 Atlas Search 字符串查询

在此页面上

  • 在集合上创建物化视图
  • 在物化视图中的字段上创建 Atlas Search 索引
  • 对转换的字段执行文本搜索

本教程介绍如何针对sample_airbnb.listingsAndReviews集合中的 stringdatenumber字段运行 Atlas Search 查询。您将创建一个 物化视图,将数字和日期字段值存储为字符串。然后,您将在物化视图上创建 Atlas Search 索引,并使用queryStringautocomplete操作符对这些字符串字段运行查询。本教程将指导您完成以下步骤:

  1. sample_airbnb.listingsAndReviews集合nameproperty_typelast_scrapedaccomodates字段上创建物化视图。

  2. 在物化视图上设置动态和静态 Atlas Search 索引。

  3. 使用queryStringautocomplete操作符对物化视图中的字段运行 Atlas Search 查询,以搜索属性。

开始之前,请确保 Atlas 集群满足先决条件中所述的要求。

要创建 Atlas Search 索引,您必须拥有 Project Data Access Admin 或更高的项目访问权限。

在本部分中,您将为airbnb_listingsAndReviews集合中的nameproperty_typelast_scrapedaccomodatesmaximum_nights字段创建一个名为airbnb-mat-view物化视图。物化视图允许获取源集合中的数字和日期字段,并将它们作为字符串字段存储在物化视图中。

1

在终端窗口中打开mongosh并连接到集群。有关连接的详细说明,请参阅通过mongosh连接。

2
  1. 运行以下命令,验证集群中是否存在该数据库:

    show dbs
    sample_airbnb 55.3 MB
    sample_analytics 9.59 MB
    sample_geospatial 1.43 MB
    sample_guides 41 kB
    sample_mflix 51.1 MB
    sample_restaurants 6.95 MB
    sample_supplies 1.21 MB
    sample_training 55.5 MB
    sample_weatherdata 2.89 MB
    admin 348 kB
    local 2.1 GB
  2. 运行以下命令以切换到sample_airbnb数据库。

    use sample_airbnb
    switched to db sample_airbnb
3

要创建物化视图,请运行以下查询。该查询指定了以下聚合管道阶段:

  • $project:在此阶段,查询会执行以下操作:

    • 使用 $dateToStringlast_scraped日期对象转换为YYYY-MM-DD格式的字符串

    • 包括nameproperty_type字符串字段。

    • 使用$toStringaccomodates数字字段转换为字符串。

    • 使用$toStringmaximum_nights数字字段转换为字符串。

  • $merge :在此阶段,查询会将$project阶段的输出字段写入名为airbnb_mat_view的物化视图。

    db.listingsAndReviews.aggregate( [
    {
    $project: {
    lastScrapedDate: { $dateToString: { format: "%Y-%m-%d", date: "$last_scraped" } },
    propertyName: "$name",
    propertyType: "$property_type",
    accommodatesNumber: { $toString: "$accommodates" },
    maximumNumberOfNights: { $toString: "$maximum_nights" }
    }
    },
    { $merge: { into: "airbnb_mat_view", whenMatched: "replace" } }
    ] )
4

要进行验证,请运行以下命令:

db.airbnb_mat_view.findOne()
{
_id: '10006546',
lastScrapedDate: '2019-02-16',
propertyName: 'Ribeira Charming Duplex',
propertyType: 'House',
accommodatesNumber: '8',
maximumNumberOfNights: '30'
}

在本部分中,您将在lastScrapedDatenamepropertyTypeaccommodatesNumbermaximumNumberOfNights字段上创建 Atlas Search 索引,以便对这些字段运行查询。

1
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示该页,请从导航栏的 Projects(项目)菜单中选择所需的项目。

  3. 如果 Database Deployments(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

2
  1. 单击集群的名称。

  2. 单击 Atlas Search 标签页。

3
4
  • 要获得引导式体验,请选择 Visual Editor

  • 要编辑原始索引定义,选择 JSON Editor

5
  1. Index Name 字段中输入 date-number-fields-tutorial

    注意

    如果将索引命名为 default,则在使用 $search 管道阶段时,您无需指定 index 参数。否则,您必须使用 index 参数指定索引名称。

  2. Database and Collection(数据库和集合)部分中找到 sample_airbnb 数据库,然后选择 airbnb_mat_view 集合。

6

您可以创建以下索引之一:

  • 使用动态映射的索引,以便使用queryString操作符运行查询。如果索引定义仅使用动态映射,则无法使用自动完成操作符运行查询。

  • 使用静态映射的索引,以便使用autocomplete操作符运行查询。您无法使用queryString操作符对索引为类型autocomplete的字段运行查询。

7

注意

会出现You're All Set!模式窗口,让您知道索引正在构建中。

8

您可以对转换为字符串的数字和日期字段运行查询。本教程使用queryStringautocomplete操作符来搜索属性。该查询使用以下管道阶段:

在本部分中,您将连接到 Atlas 集群,并使用运算符针对airbnb_mat_view集合中的字段运行样本查询。

注意

您无法对物化视图中已转换为字符串的日期和数字字段运行近期范围查询。


➤ 使用本页的“选择语言”下拉菜单设置本节示例的语言。


← 如何使用日期范围筛选器运行 Atlas Search 查询