Overview
在本指南中,您可以学习如何使用Go驱动程序对集合运行MongoDB 搜索查询。MongoDB Search 使您能够对 MongoDB Atlas 上托管的集合执行全文搜索。MongoDB 搜索索引指定搜索行为以及要索引的字段。
样本数据
The example in this guide uses the movies collection in the sample_mflix database from the Atlas sample datasets. To learn how to create a free MongoDB Atlas cluster and load the sample datasets, see the MongoDB Get Started guide.
运行MongoDB搜索查询
本节展示如何创建聚合管道,以对集合运行 MongoDB 搜索查询。
要运行MongoDB搜索查询,您必须在集合上创建MongoDB搜索索引。要学习如何以编程方式创建MongoDB搜索索引,请参阅索引指南中的MongoDB搜索和MongoDB Vector Search索引部分。
创建 MongoDB Search 索引后,可在您的管道阶段数组中添加 $search 阶段以指定搜索条件。然后,调用 Aggregate() 方法并将管道数组作为参数传递。
提示
要学习;了解有关聚合操作的更多信息,请参阅 聚合指南。
注意
Atlas和 Community Edition 版本要求
$search 聚合管道操作符仅适用于在运行 MongoDB v4.2 或更高版本的MongoDB Atlas集群上托管的集合,或者运行 MongoDB v8.2 或更高版本的MongoDB Community Edition集群上托管的集合。集合必须包含在MongoDB 搜索索引中。要了解有关此操作符所需设置和功能的更多信息,请参阅MongoDB 搜索文档。
MongoDB搜索示例
此示例通过执行以下操作来运行MongoDB 搜索查询:
创建一个
$search阶段,指示驱动程序查询title字段包含单词"Alabama"的文档创建一个
$project阶段,指示驱动程序在查询结果中包含title字段将管道阶段传递到
Aggregate()方法并打印结果
// Defines the pipeline searchStage := bson.D{{"$search", bson.D{ {"text", bson.D{ {"path", "title"}, {"query", "Alabama"}, }}, }}} projectStage := bson.D{{"$project", bson.D{{"title", 1}}}} // Runs the pipeline cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, projectStage}) if err != nil { panic(err) } // Prints the results var results []bson.D if err = cursor.All(ctx, &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) }
{ _id: new ObjectId('...'), title: 'Alabama Moon' } { _id: new ObjectId('...'), title: 'Crazy in Alabama' } { _id: new ObjectId('...'), title: 'Sweet Home Alabama' }
更多信息
要了解有关 MongoDB Search 的更多信息,请参阅 MongoDB Search 指南和 Atlas 文档中的 $search 管道阶段参考。
API 文档
要学习;了解有关 Aggregate() 方法的详情,请参阅API文档。