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 或 8 或更高版本的企业Linux发行版,则可以使用与前面示例所示相同的命令并将 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 Atlas在云中托管和管理您的MongoDB 数据库。
完成这些步骤后,您就在Atlas上有了一个新的免费集群、数据库用户凭证以及加载到数据库中的示例数据。
创建连接字符串
您可以通过提供连接 URI(也称为连接字符串)来连接到 MongoDB 部署,它指示驱动程序如何连接到 MongoDB 部署以及连接时的行为方式。
连接字符串包含部署的主机名或 IP 地址和端口、身份验证机制、用户档案(如果适用)以及连接选项。
要连接到未托管在Atlas上的实例或部署,请参阅选择连接目标指南。
完成这些步骤后,您就拥有了与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; }
设置 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.5.6。将程序链接到
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 部署、对示例数据运行查询并打印结果。
后续步骤
恭喜您完成快速入门教程!
注意
如果您在此步骤中运行问题,请使用此页面右侧或右下角的 Rate this page标签页提交反馈。
您可以使用MongoDB Stack Overflow标签或MongoDB Reddit 社区找到一般问题的支持。
在本教程中,您创建了一个C应用程序,该应用程序连接到MongoDB Atlas上托管的MongoDB 部署,并检索与查询匹配的文档。
通过以下资源学习有关C驱动程序的更多信息:

