Docs 菜单
Docs 主页
/ / /
C 驱动程序
/

Retrieve Data

在此页面上

  • Overview
  • 样本数据
  • 查找文档
  • 查找文档示例
  • 修改查找行为
  • 更多信息
  • API 文档

在本指南中,您可以学习;了解如何使用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() 函数的行为。下表描述了常用于修改查询的选项:

选项
说明
collation
Sets the collation options for the query.
comment
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.
hint
Specifies the index to use for the query.
limit
Limits the number of documents to be returned from the query.
maxTimeMS
Sets the maximum execution time on the server for this operation.
skip
Sets the number of documents to skip.
sort
Defines the sort criteria to apply to the query.

以下示例使用 limitmaxTimeMS 选项将查询返回的文档数限制为 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文档:

后退

指定查询