Docs 菜单
Docs 主页
/ /

运行MongoDB搜索查询

在本指南中,您可以学习;了解如何使用Kotlin Sync驾驶员对集合运行 MongoDB搜索查询。 MongoDB Search 使您能够对MongoDB Atlas上托管的集合执行全文搜索。 MongoDB Search 索引指定搜索行为以及要索引的字段。

本指南中的示例使用Atlas示例数据集sample_mflix数据库中的 movies集合。要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅Atlas入门指南。要学习;了解有关聚合操作和构建者的更多信息,请参阅 聚合操作指南。

本部分介绍如何创建聚合管道以对集合运行MongoDB搜索查询。您可以使用 Aggregates.search() 构建器方法创建 $search管道阶段,其中指定搜索条件。然后,调用 aggregate() 方法并将管道作为参数传递。

注意

仅适用于 Atlas for MongoDB v4.2 及更高版本

此聚合管道操作符仅适用于在运行v 或更高版本的MongoDB 4.2Atlas集群上托管且由MongoDB Search索引覆盖的集合。从MongoDB Search 文档中了解详情有关此操作符所需的设置和功能的更多信息。

在运行MongoDB Search查询之前,您必须在集合上创建MongoDB Search索引。要学习;了解如何以编程方式创建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"}

使用 searchMeta() 方法创建 $searchMeta 管道阶段,该阶段仅返回Atlas全文搜索结果中的元数据。

提示

仅适用于 Atlas for MongoDB v4.4.11 及更高版本

此聚合管道操作符仅适用于运行 v4.4.11 及更高版本的 MongoDB Atlas 集群。

以下示例显示了MongoDB Search聚合阶段的 near元数据:

searchMeta(
SearchOperator.near(2010, 1, fieldPath("year"))
)

要学习;了解有关MongoDB Search 的更多信息,请参阅Atlas文档中的MongoDB Search。

要学习;了解有关本指南中提到的方法的更多信息,请参阅以下API文档:

后退

运行数据库命令

在此页面上