Docs 主页 → 启动和管理 MongoDB → MongoDB Atlas
如何对日期和数值字段运行 Atlas Search 字符串查询
本教程介绍如何针对sample_airbnb.listingsAndReviews
集合中的 string
、 date
和number
字段运行 Atlas Search 查询。您将创建一个 物化视图,将数字和日期字段值存储为字符串。然后,您将在物化视图上创建 Atlas Search 索引,并使用queryString和autocomplete操作符对这些字符串字段运行查询。本教程将指导您完成以下步骤:
在
sample_airbnb.listingsAndReviews
集合name
、property_type
、last_scraped
和accomodates
字段上创建物化视图。在物化视图上设置动态和静态 Atlas Search 索引。
使用queryString和autocomplete操作符对物化视图中的字段运行 Atlas Search 查询,以搜索属性。
开始之前,请确保 Atlas 集群满足先决条件中所述的要求。
要创建 Atlas Search 索引,您必须拥有 Project Data Access Admin
或更高的项目访问权限。
在集合上创建物化视图
在本部分中,您将为airbnb_listingsAndReviews
集合中的name
、 property_type
、 last_scraped
、 accomodates
和maximum_nights
字段创建一个名为airbnb-mat-view
的物化视图。物化视图允许获取源集合中的数字和日期字段,并将它们作为字符串字段存储在物化视图中。
登录到 Atlas 并使用mongosh
连接到集群。
在终端窗口中打开mongosh
并连接到集群。有关连接的详细说明,请参阅通过mongosh
连接。
验证并切换到sample_airbnb
数据库。
运行以下命令,验证集群中是否存在该数据库:
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 运行以下命令以切换到
sample_airbnb
数据库。use sample_airbnb switched to db sample_airbnb
创建一个名为airbnb_mat_view
的物化视图。
要创建物化视图,请运行以下查询。该查询指定了以下聚合管道阶段:
$project
:在此阶段,查询会执行以下操作:$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" } } ] )
在物化视图中的字段上创建 Atlas Search 索引
在本部分中,您将在lastScrapedDate
、 name
、 propertyType
、 accommodatesNumber
和maximumNumberOfNights
字段上创建 Atlas Search 索引,以便对这些字段运行查询。
输入Index Name ,然后设置Database and Collection 。
在 Index Name 字段中输入
date-number-fields-tutorial
。注意
如果将索引命名为
default
,则在使用 $search 管道阶段时,您无需指定index
参数。否则,您必须使用index
参数指定索引名称。在 Database and Collection(数据库和集合)部分中找到
sample_airbnb
数据库,然后选择airbnb_mat_view
集合。
在物化视图中的字段上定义索引。
您可以创建以下索引之一:
使用动态映射的索引,以便使用queryString操作符运行查询。如果索引定义仅使用动态映射,则无法使用自动完成操作符运行查询。
使用静态映射的索引,以便使用autocomplete操作符运行查询。您无法使用queryString操作符对索引为类型
autocomplete
的字段运行查询。
对转换的字段执行文本搜索
您可以对转换为字符串的数字和日期字段运行查询。本教程使用queryString和autocomplete操作符来搜索属性。该查询使用以下管道阶段:
在本部分中,您将连接到 Atlas 集群,并使用运算符针对airbnb_mat_view
集合中的字段运行样本查询。
➤ 使用本页的“选择语言”下拉菜单设置本节示例的语言。