Overview
在本指南中,您可以学习;了解如何使用Kotlin Sync驾驶员对集合运行 MongoDB搜索查询。 MongoDB Search 使您能够对MongoDB Atlas上托管的集合执行全文搜索。 MongoDB Search 索引指定搜索行为以及要索引的字段。
样本数据
本指南中的示例使用Atlas示例数据集的 sample_mflix数据库中的 movies集合。要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅Atlas入门指南。要学习;了解有关聚合操作和构建者的更多信息,请参阅 聚合操作指南。
运行MongoDB搜索查询
本部分介绍如何创建聚合管道以对集合运行MongoDB搜索查询。您可以使用 Aggregates.search() 构建器方法创建 $search管道阶段,其中指定搜索条件。然后,调用 aggregate() 方法并将管道作为参数传递。
注意
仅适用于 Atlas for MongoDB v4.2 及更高版本
此聚合管道操作符仅适用于在运行v 或更高版本的MongoDB 4.2Atlas集群上托管且由MongoDB Search索引覆盖的集合。从MongoDB Search 文档中了解详情有关此操作符所需的设置和功能的更多信息。
在运行MongoDB Search查询之前,您必须在集合上创建MongoDB Search索引。要学习;了解如何以编程方式创建MongoDB搜索索引,请参阅索引指南中的创建搜索索引部分。
MongoDB搜索示例
此示例通过执行以下操作来运行MongoDB搜索查询:
使用
Aggregates.search()构建器方法构建$search阶段,指示驱动程序查询title字段中包含单词"Alabama"的文档使用
Aggregates.project()构建器方法构造$project阶段,指示驾驶员在查询结果中包含title字段将管道阶段传递到
aggregate()方法并打印结果
val pipeline: List<Bson> = listOf( search(SearchOperator.text( fieldPath("title"), "Alabama")), project(Projections.include("title")) ) val results = collection.aggregate(pipeline) results.forEach { doc -> println(doc.toJson()) }
{"_id": {"$oid": "..."}, "title": "Alabama Moon"} {"_id": {"$oid": "..."}, "title": "Crazy in Alabama"} {"_id": {"$oid": "..."}, "title": "Sweet Home Alabama"}
MongoDB搜索元数据
使用 searchMeta() 方法创建 $searchMeta 管道阶段,该阶段仅返回Atlas全文搜索结果中的元数据。
以下示例显示了MongoDB Search聚合阶段的 near元数据:
searchMeta( SearchOperator.near(2010, 1, fieldPath("year")) )
更多信息
要学习;了解有关MongoDB Search 的更多信息,请参阅Atlas文档中的MongoDB Search。
API 文档
要学习;了解有关本指南中提到的方法的更多信息,请参阅以下API文档: