Overview
在本指南中,您可以学习;了解如何使用Kotlin Sync驾驶员对集合运行MongoDB搜索查询。MongoDB Search 使您能够对MongoDB Atlas上托管的集合执行全文搜索。MongoDB 搜索索引指定搜索行为以及要索引的字段。
样本数据
本指南中的示例使用Atlas示例数据集的 sample_mflix数据库中的 movies集合。要学习;了解如何创建免费的MongoDB 部署并加载示例数据集,请参阅MongoDB 入门指南。要学习有关聚合操作和构建者的更多信息,请参阅 聚合操作指南。
运行MongoDB搜索查询
本节展示如何创建聚合管道,以对集合运行 MongoDB Search 查询。 您可以使用 Aggregates.search() 构建器方法来创建 $search 管道阶段,该阶段指定搜索条件。然后,调用 aggregate() 方法,并将您的管道作为参数传递。
注意
Atlas和 Community Edition 版本要求
The $search aggregation pipeline operator is available only for collections hosted on MongoDB Atlas clusters running MongoDB v4.2 or later, or on MongoDB Community Edition clusters running MongoDB v8.2 or later. To learn more about the required setup and functionality of this operator, see the MongoDB Search documentation.
在运行MongoDB 搜索查询之前,您必须在集合上创建MongoDB 搜索索引。要学习如何以编程方式创建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 搜索聚合阶段的 near 元数据:
searchMeta( SearchOperator.near(2010, 1, fieldPath("year")) )
更多信息
要学习有关MongoDB Search 的更多信息,请参阅Atlas文档中的MongoDB Search。
API 文档
要学习;了解有关本指南中提到的方法的更多信息,请参阅以下API文档: