本教程演示了如何通过将非字符串字段转换为字符串并将其存储在物化视图中来对非字符串字段运行字符串特定的查询。物化视图可让您使用特定于字符串的操作符来查询转换后的字段,并在源集合中保持原始数据不变。
本教程将指导您完成以下步骤:
开始之前,请确保您的集群满足 先决条件中所述的要求。
创建一个物化视图
本部分演示如何在 airbnb-mat-viewsample_airbnb.listingsAndReviews 上创建名为 的物化视图集合。此视图将源集合中的各种数字和日期字段存储为字符串字段。
在物化视图上创建MongoDB Search 索引
要运行本教程在转换字段上运行查询阶段中的查询,您需要在 airbnb_mat_view 物化视图中的转换字符串字段上创建MongoDB Search 索引。
以下 JSON 定义定义了 airbnb_mat_view 物化视图上的 MongoDB Search 索引。您可以使用动态或静态映射来指定要在集合中索引的字段,具体取决于要运行的查询类型。要学习;了解字段映射或MongoDB Search索引语法的更多信息,请分别参阅定义字段映射或索引参考资料。
以下JSON MongoDB Search索引定义使用动态映射对物化视图中的字段索引。您可以使用此索引通过queryString操作符运行查询。
您无法使用autocomplete操作符对动态索引字段运行查询。
{ "mappings": { "dynamic": true } }
以下JSON MongoDB Search索引定义使用静态映射将物化视图中的字段索引为autocomplete 类型。您可以使用此索引通过autocomplete操作符运行查询。
不能使用 queryString 操作符对索引为 autocomplete 类型的字段运行查询。
{ "mappings": { "dynamic": false, "fields": { "accommodatesNumber": [ { "dynamic": true, "type": "document" }, { "minGrams": 1, "type": "autocomplete" } ], "lastScrapedDate": [ { "dynamic": true, "type": "document" }, { "type": "autocomplete" } ], "maximumNumberOfNights": [ { "dynamic": true, "type": "document" }, { "minGrams": 1, "type": "autocomplete" } ] } } }
要学习;了解如何使用您的首选接口创建上面定义的索引,请参阅支持的客户端。
对转换后的字段运行查询
您可以对已转换为字符串的 numeric 和 date 字段运行查询。本教程使用 queryString 和 autocomplete 操作符来搜索属性。查询使用了下列管道阶段:
在本部分中,您将连接到集群并使用操作符针对 airbnb_mat_view集合中的字段运行示例查询。