Overview
在本指南中,您可以学习如何使用 Go 驱动程序在集合上运行 MongoDB Search 查询。MongoDB Search 使您能够对 MongoDB Atlas 上托管的集合执行全文搜索。MongoDB Search 索引指定了搜索行为以及要索引的字段。
样本数据
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 Search 查询,您必须在集合上创建 MongoDB Search 索引。要了解如何以编程方式创建 MongoDB Search 索引,请参阅索引指南的 MongoDB Search 和 MongoDB Vector Search 索引部分。
创建 MongoDB Search 索引后,可在您的管道阶段数组中添加 $search 阶段以指定搜索条件。然后,调用 Aggregate() 方法并将管道数组作为参数传递。
提示
要学习;了解有关聚合操作的更多信息,请参阅 聚合指南。
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文档。