检索数据
概述
在本指南中,您可以了解如何使用C驱动程序通过使用读取操作从MongoDB集合中检索数据。您可以调用mongoc_collection_find_with_opts()
函数来检索匹配查询过滤器中指定的一组标准的文档。
示例数据
本指南中的示例使用来自 sample_restaurants
数据库中的 restaurants
集合。Atlas 示例数据集。要了解如何创建免费的MongoDB Atlas集群并加载示例数据集,请参阅Atlas 入门指南。
查找文档
mongoc_collection_find_with_opts()
函数接受一个 查询过滤器 并返回集合中所有匹配的文档。查询过滤器是一个文档,它指定了驱动程序用于匹配集合中文档的标准。
要了解更多关于查询过滤器的内容,请参阅指定查询指南。
查找文档示例
以下示例使用mongoc_collection_find_with_opts()
函数查找所有cuisine
字段的值为"Spanish"
的文档。
bson_t *filter = BCON_NEW ("cuisine", BCON_UTF8 ("Spanish")); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, NULL, NULL);
上一个示例中的mongoc_collection_find_with_opts()
操作返回一个mongoc_cursor_t *
,您可以通过使用mongoc_cursor_next()
函数和while循环来遍历它。以下示例遍历并打印之前查询返回的结果
const bson_t *doc; bson_error_t error; while (mongoc_cursor_next (results, &doc)) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } // Ensure we iterated through cursor without error if (mongoc_cursor_error (results, &error)) { fprintf (stderr, "Error getting results: %s\n", error.message); } mongoc_cursor_destroy (results); bson_destroy (filter);
{ "_id" : { "$oid" : "..." }, "name" : "Charle'S Corner Restaurant & Deli", "cuisine" : "Spanish", ... } { "_id" : { "$oid" : "..." }, "name" : "Real Madrid Restaurant", "cuisine" : "Spanish", ... } { "_id" : { "$oid" : "..." }, "name" : "Malaga Restaurant", "cuisine" : "Spanish", ... } { "_id" : { "$oid" : "..." }, "name" : "Cafe Espanol", "cuisine" : "Spanish", ... } { "_id" : { "$oid" : "..." }, "name" : "Cafe Riazor", "cuisine" : "Spanish", ... } ...
注意
查找所有文档
要查找集合中的所有文档,将一个空过滤器传递给mongoc_collection_find_with_opts()
函数
bson_t *empty_filter = bson_new (); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, empty_filter, NULL, NULL); mongoc_cursor_destroy (results); bson_destroy (empty_filter);
修改查找行为
您可以通过传递一个包含您想要配置的选项的bson_t
结构来修改mongoc_collection_find_with_opts()
函数的行为。以下表格描述了用于修改查询的常用选项
选项 | 描述 |
---|---|
collation | 设置查询的排序规则选项。 |
comment | 指定附加到查询的字符串。这可以帮助您在服务器日志和性能数据中跟踪和解释操作。有关查询注释的更多信息,请参阅MongoDB服务器手册中的$comment。 |
hint | 指定用于查询的索引。 |
limit | 限制查询返回的文档数量。 |
maxTimeMS | 设置此操作在服务器上的最大执行时间。 |
skip | 设置要跳过的文档数量。 |
sort | 定义应用于查询的排序标准。 |
以下示例使用 limit
和 maxTimeMS
选项将查询返回的文档数量限制为 10
,并将操作的最大执行时间设置为 10000
毫秒。
bson_t *filter = BCON_NEW ("cuisine", BCON_UTF8 ("Spanish")); bson_t *opts = BCON_NEW ("limit", BCON_INT32 (10), "maxTimeMS", BCON_INT32 (10000)); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, filter, opts, NULL); mongoc_cursor_destroy (results); bson_destroy (filter); bson_destroy (opts);
有关修改 mongoc_collection_find_with_opts()
行为的所有选项的完整列表,请参阅 MongoDB 服务器手册中的 find 方法 文档。
更多信息
有关查询过滤器的更多信息,请参阅 指定查询。
要查看使用 C 驱动程序检索文档的可运行代码示例,请参阅 从 MongoDB 读取数据。
API 文档
有关本指南中讨论的任何函数的更多信息,请参阅以下 API 文档