使用复合运算符查询
Overview
在本指南中,您将了解如何通过聚合管道在复合查询中使用多个搜索操作符。
所需时间:5 分钟
您需要的工具
一个MongoDB帐户。 请参阅注册MongoDB帐户。
Atlas 集群。请参阅创建群集。
加载到集群中的示例数据集。
具有默认设置和动态索引的搜索索引。 要创建默认动态索引,请参阅构建动态索引。
步骤
AtlasGoClusters在Atlas中,Go项目的 页面。
警告
Navigation Improvements In Progress
We're currently rolling out a new and improved navigation experience. If the following steps don't match your view in the Atlas UI, see the preview Atlas documentation.
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
单击 Collections 标签页。

单击sample_supplies
数据库,然后单击sales
collection。
在Aggregations 标签页中对索引运行复合查询。
单击 Aggregation 标签页。
单击+ Add Stage开始创建聚合管道。
在阶段窗口中,单击标有Select的下拉菜单并选择$search阶段。
将占位符代码替换为以下查询。
{ "compound": { "filter": [{ "text": { "query": "Online", "path": "purchaseMethod" } }], "should": [{ "text": { "query": "notepad", "path": "items" } }] } }
此查询将compound
操作符与以下内容结合使用:
filter
子句仅返回purchaseMethod
为Online
的文档。should
子句返回具有items
字段且包含notepad
的文档,该文档的得分高于不含该字段的文档。
查看复合查询的结果。
在右侧窗格中,结果应包括类似于以下示例文档的文档列表:
items: Array 0: Object 1: Object 2: Object name: "notepad" ... storeLocation: "Denver" customer: Object couponUsed: false purchaseMethod: "Online" _id: ObjectID('5bd761dcae323e45a93cd06e') saleDate: 2013-11-22T18:49:45.212+00:00
注意
对于每个返回的文档,字段并不总是以相同的顺序显示。
您可以通过单击展开Array
和Object
字段以查看其内容。
总结
如果您成功完成了本指南中的过程,那么您就已经使用复合操作符创建了 Atlas Search 聚合阶段,并且看到了操作符中的不同子句如何相互作用以将搜索结果集中在多个轴上。 在下一篇指南中,您将学习如何使用分面(Facet)对搜索结果进行分组。