Overview
MongoDB C驱动程序是一个C库,可用于连接到MongoDB并与部署中存储的数据交互。 本指南向您展示如何创建一个应用程序使用C驾驶员连接到MongoDB Atlas上托管的MongoDB 集群并查询集群中的数据。
提示
MongoDB Atlas 是完全托管的云数据库服务,旨在托管您的 MongoDB 部署。您可以按照本指南中的步骤创建您的免费(无需信用卡)MongoDB Atlas 部署。
按照本指南将示例C应用程序连接到MongoDB Atlas部署。 如果您希望使用不同的驾驶员或编程语言连接MongoDB ,请参阅我们的官方驱动程序的 列表。
下载并安装
下载C驱动程序
C驾驶员由两个库组成:libbson
和 libmongoc
。 在本指南中,您将学习;了解如何安装与 libbson
捆绑在一起的 libmongoc
。
您可以使用包管理器或从源代码安装库来安装C驾驶员。 使用包管理器安装时,不同的Linux发行版会安装不同版本的驾驶员。 因此,在安装驾驶员之前,应检查发行版包含的版本。
在RedHat Enterprise Linux (RHEL) 发行版上,可以通过在Shell中运行以下命令来检查版本:
sudo dnf info mongo-c-driver-devel
在基于 Debian 的发行版上,可以通过在Shell中运行以下命令来检查版本:
apt-cache policy libmongoc-dev
如果可用的驾驶员版本不是您想要的版本,您可以从源代码安装驾驶员。 要学习;了解如何从源代码安装驾驶员,请参阅 从源代码构建C驱动程序库指南。
要学习;了解如何使用包管理器安装驾驶员,请选择与您的操作系统相对应的标签标签页:
RedHat Enterprise Linux发行版
您可以在RedHat Enterprise Linux (RHEL) 发行版 7 或更高版本或基于 RHEL 的发行版上安装驾驶员,例如:
在 RHEL 发行版(不包括 Fedora)上安装驾驶员之前,必须先启用Extra Packages for Enterprise Linux (EPEL)存储库。 您可以通过安装 epel-release
包来启用EPEL存储库,如以下示例所示:
yum install epel-release
然后,您可以使用 yum
安装C驾驶员。 为此,请在Shell中运行以下命令:
yum install mongo-c-driver-devel
注意
开发者包
前面的代码示例安装了开发者包,这是构建使用C驾驶员的应用程序所需的。 要仅安装库而不安装开发文件,运行以下命令:
yum install mongo-c-driver
如果要在版本 8 或更高版本的 RHEL 发行版上进行安装,我们建议使用 dnf
而不是 yum
来运行前面的代码示例。
Fedora
如果您使用的是 Fedora 或版本为 或更高版本的企业Linux发行版,则可以使用与前面示例中所示相同的命令并将8 yum
替换为dnf
来安装驾驶员。
以下示例显示了如何在 Fedora 发行版中安装C驾驶员:
dnf install mongo-c-driver-devel
基于 Debian 的发行版
在基于 Debian 的Linux发行版(包括Ubuntu和Ubuntu衍生品)中,可通过高级打包工具 (APT) 获取驾驶员库。 您可以通过在Shell中运行以下命令来使用 APT 安装驾驶员:
apt install libmongoc-dev
前面的代码示例安装了开发者包,这是构建使用C驾驶员的应用程序所需的。 要仅安装库而不安装开发文件,运行以下命令:
apt install libmongoc-1.0-0
对于Windows环境,我们建议从源代码构建C驾驶员库,以确保与本地工具链的最大兼容性。 您可以使用源代码库包管理工具(例如 vcpkg)自动从源代码进行构建。
提示
要学习;了解如何开始使用 vcpkg,请参阅Microsoft文档中的 vcpkg 入门指南。
在 vcpkg 清单文件模式下,将驾驶员库添加到项目的vcpkg.json
清单文件中,如以下示例所示:
{ // ... "dependencies": [ // ... "mongo-c-driver" ] }
当您使用 vcpkg 集成构建CMake项目并具有 vcpkg.json
清单文件时,vcpkg 会在继续配置之前自动安装项目的依赖项。
如果使用的是 vcpkg 经典模式,则可以通过在Shell中运行以下命令来安装驾驶员:
vcpkg install mongo-c-driver
安装驾驶员后,标准 CMake 配置文件和生成的 IMPORTED
目标就可用了。
要使用 vcpkg 集成配置 CMake项目,请在Shell中运行以下命令,在配置命令中设立CMake 工具链文件:
cmake -S . -B _build -D CMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
您可以使用 Homebrew包管理器在 MacOS 上安装C驾驶员。为此,请在Shell中运行以下命令:
brew install mongo-c-driver
完成这些步骤后,您就已在计算机上安装了C驾驶员。
创建 MongoDB 部署
您可以在 MongoDB Atlas 上创建一个免费套餐 MongoDB 部署来存储和管理您的数据。MongoDB Atlas 在云端托管和管理您的 MongoDB 数据库。
在 Atlas 上创建免费的 MongoDB 部署
请按照 Atlas 入门指南中的步骤,设置新的 Atlas 账户并将示例数据加载到新的免费套餐 MongoDB 部署中。
完成这些步骤后,您就在 Atlas 上有了一个新的免费套餐 MongoDB 部署、数据库用户档案以及加载到数据库中的示例数据。
创建连接字符串
您可以通过提供连接 URI(也称为连接字符串)来连接到 MongoDB 部署,它指示驱动程序如何连接到 MongoDB 部署以及连接时的行为方式。
连接字符串包含部署的主机名或 IP 地址和端口、身份验证机制、用户档案(如果适用)以及连接选项。
要连接到未托管在Atlas上的实例或部署,请参阅选择连接目标指南。
查找 MongoDB Atlas 连接字符串
要检索您在上一步中创建的部署的连接字符串,登录您的Atlas帐户并导航到 Database 部分,然后单击新部署的 Connect 按钮。

进入 Connect your application 部分,从 Driver 选择菜单中选择“C”,然后从 Version 选择菜单中选择与您安装的版本最匹配的版本。
选择Password (SCRAM)身份验证机制。
取消选择 Include full driver code example 选项以仅查看连接string 。
完成这些步骤后,您就拥有了与string Atlas集群对应的连接 。
运行示例查询
您可以创建一个应用程序,用于连接到MongoDB 部署并从 sample_mflix
数据库的 movies
集合中检索数据。
要学习;了解有关 sample_mflix
数据库的详情,请参阅Atlas文档中的示例 Mflix 数据集。
创建C驱动程序应用程序
将以下代码复制并粘贴到quickstart.c
文件中,该文件将查询sample_mflix
数据库中的movies
集合:
int main (void) { const bson_t *doc; mongoc_init (); mongoc_client_t *client = mongoc_client_new ("<connection string>"); mongoc_collection_t *collection = mongoc_client_get_collection (client, "sample_mflix", "movies"); // Specify the query filter bson_t *query = BCON_NEW ("title", "The Shawshank Redemption"); mongoc_cursor_t *results = mongoc_collection_find_with_opts (collection, query, NULL, NULL); // Print the results while (mongoc_cursor_next (results, &doc)) { char* str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } bson_destroy (query); mongoc_cursor_destroy (results); mongoc_collection_destroy (collection); mongoc_client_destroy (client); mongoc_cleanup (); return EXIT_SUCCESS; }
指定连接字符串
将 <connection string>
占位符替换为从本指南的“创建连接字符串”步骤中复制的连接字符串。
设置 CMake应用程序
要配置应用程序,请在项目目录中创建一个 CMakeLists.txt
文件。然后,将以下代码添加到该文件:
cmake_minimum_required(VERSION 3.11) project(c-quickstart LANGUAGES C) add_executable (quickstart.out quickstart.c) find_package(mongoc <version> REQUIRED) target_link_libraries(quickstart.out mongoc::mongoc)
前面的代码执行以下操作:
配置C项目。
为应用程序创建
quickstart.out
可执行文件。查找并要求安装C驾驶员。将
<version>
占位符替换为您的C驾驶员版本号,例如2.0.2
。将程序链接到
libmongoc
库。
注意
在示例CMakeLists.txt
文件中,mongoc::mongoc
目标指向静态库或共享库。库类型取决于可用的库类型以及用户在 MONGOC_DEFAULT_IMPORTED_LIBRARY_TYPE
CMake 配置设置中指定的类型。如果您不设立此值并且两种库类型都可用,则 mongoc::mongoc
将使用静态库。
您可以使用 mongoc::static
目标显式使用静态库,也可以使用 mongoc::shared
目标使用共享库。
运行您的C应用程序
在Shell中,运行以下命令以构建并运行此应用程序:
cmake -S. -Bcmake-build cmake --build cmake-build --target quickstart.out ./cmake-build/quickstart.out
命令行输出包含有关检索到的电影文档的详细信息:
{ "_id" : { "$oid" : "..." }, "plot" : "Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.", ... "title" : "The Shawshank Redemption", ...
如果遇到错误或看不到输出,请确保在quickstart.c
文件中指定了正确的连接字符串并加载了样本数据。
完成这些步骤后,您有一个正常运行的应用程序,它使用驱动程序连接到 MongoDB 部署、对示例数据运行查询并打印结果。
后续步骤
恭喜您完成快速入门教程!
注意
如果您在学习本教程时运行问题,请在MongoDB Community论坛中寻求帮助,或使用此页面右侧或右下角的 Rate this page标签页提交反馈。
在本教程中,您创建了一个C应用程序,该应用程序连接到MongoDB Atlas上托管的MongoDB 部署,并检索与查询匹配的文档。
通过以下资源了解详情有关C驾驶员的更多信息:
在读取数据部分了解如何执行读取操作。
通过“将数据写入MongoDB ”部分了解如何执行写入操作。