对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

运行MongoDB搜索查询

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

本指南中的示例使用Atlas 示例数据集中的 sample_mflix 数据库中的 movies 集合。学习如何创建免费的 MongoDB Atlas 集群并加载示例数据集,请参阅 入门指南

本部分介绍如何创建聚合管道以对集合运行MongoDB搜索查询。在表示管道阶段的 bson_t 结构中,添加 $search 阶段以指定搜索条件。然后,调用 mongoc_collection_aggregate() 函数并将管道作为参数传递。

提示

要学习;了解有关聚合操作的更多信息,请参阅 聚合指南。

在运行MongoDB 搜索查询之前,您必须在集合上创建MongoDB 搜索索引。要学习如何以编程方式创建MongoDB搜索索引,请参阅MongoDB搜索索引指南中创建搜索索引部分。

此示例通过执行以下操作来运行MongoDB 搜索查询:

  • 创建一个 $search 阶段,指示驱动程序查询title字段包含单词 "Alabama" 的文档

  • 创建一个 $project 阶段,指示驱动程序在查询结果中包含 title 字段

  • 将管道阶段传递给 mongoc_collection_aggregate() 函数并打印结果

const bson_t *doc;
bson_t *pipeline = BCON_NEW("pipeline",
"[",
"{", "$search", "{", "index", BCON_UTF8("<index name>"), "text", "{", "query", BCON_UTF8("Alabama"), "path", BCON_UTF8("title"), "}", "}", "}",
"{", "$project", "{", "title", BCON_INT32(1), "}", "}",
"]");
mongoc_cursor_t *results =
mongoc_collection_aggregate(collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL);
while (mongoc_cursor_next(results, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
bson_destroy(pipeline);
mongoc_cursor_destroy(results);
{ "_id" : { "$oid" : "..." }, "title" : "Alabama Moon" }
{ "_id" : { "$oid" : "..." }, "title" : "Sweet Home Alabama" }
{ "_id" : { "$oid" : "..." }, "title" : "Crazy in Alabama" }

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

要学习;了解有关 mongoc_collection_aggregate() 函数的详情,请参阅API文档。