Retrieve Data
Overview
在本指南中,您可以学习;了解如何使用C驾驶员通过读取操作从MongoDB集合中检索数据。您可以调用 mongoc_collection_find_with_opts()
函数来检索与查询过滤中指定的一设立条件匹配的文档。
样本数据
本指南中的示例使用 Atlas示例数据集的sample_restaurants
数据库中的restaurants
集合。 要学习;了解如何创建免费的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()
函数的行为。下表描述了常用于修改查询的选项:
选项 | 说明 |
---|---|
| Sets the collation options for the query. |
| Specifies a string to attach to the query. This can help you trace and interpret the
operation in the server logs and in profile data. To learn more about query comments,
see $comment in the MongoDB Server
manual. |
| Specifies the index to use for the query. |
| Limits the number of documents to be returned from the query. |
| Sets the maximum execution time on the server for this operation. |
| Sets the number of documents to skip. |
| Defines the sort criteria to apply to the query. |
以下示例使用 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 Server手册中的 find 方法文档。
更多信息
如需了解有关查询过滤器的更多信息,请参阅指定查询。
要查看使用C驾驶员检索文档的可运行代码示例,请参阅从MongoDB读取数据。
API 文档
要学习;了解有关本指南中讨论的任何函数的更多信息,请参阅以下API文档: