Docs 菜单
Docs 主页
/ /

运行MongoDB搜索查询

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

本指南中的示例使用Atlas示例数据集sample_mflix数据库中的 movies集合。要学习;了解如何创建免费的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 搜索查询:

  • 使用 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 搜索聚合阶段的 near 元数据:

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

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

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

后退

运行数据库命令

在此页面上