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

C驱动程序入门

MongoDB C驱动程序是一个C库,可用于连接到MongoDB并与部署中存储的数据交互。 本指南向您展示如何创建一个应用程序使用C驾驶员连接到MongoDB Atlas上托管的MongoDB 集群并查询集群中的数据。

提示

MongoDB Atlas 是完全托管的云数据库服务,旨在托管您的 MongoDB 部署。您可以按照本指南中的步骤创建您的免费(无需信用卡)MongoDB Atlas 部署。

按照本指南将示例C应用程序连接到MongoDB Atlas部署。 如果您希望使用不同的驾驶员或编程语言连接MongoDB ,请参阅我们的官方驱动程序的 列表。

C驾驶员由两个库组成:libbsonlibmongoc。 在本指南中,您将学习;了解如何安装与 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 (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 或版本为 或更高版本的企业Linux发行版,则可以使用与前面示例中所示相同的命令并将8 yum替换为dnf 来安装驾驶员。

以下示例显示了如何在 Fedora 发行版中安装C驾驶员:

dnf install mongo-c-driver-devel

在基于 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 Atlas 上创建一个免费套餐 MongoDB 部署来存储和管理您的数据。MongoDB Atlas 在云端托管和管理您的 MongoDB 数据库。

1

请按照 Atlas 入门指南中的步骤,设置新的 Atlas 账户并将示例数据加载到新的免费套餐 MongoDB 部署中。

2

创建数据库用户后,请将该用户的用户名和密码保存在一个安全位置,以便在后续步骤中使用。

完成这些步骤后,您就在 Atlas 上有了一个新的免费套餐 MongoDB 部署、数据库用户档案以及加载到数据库中的示例数据。

您可以通过提供连接 URI(也称为连接字符串)来连接到 MongoDB 部署,它指示驱动程序如何连接到 MongoDB 部署以及连接时的行为方式。

连接字符串包含部署的主机名或 IP 地址和端口、身份验证机制、用户档案(如果适用)以及连接选项。

要连接到未托管在Atlas上的实例或部署,请参阅选择连接目标指南。

1

要检索您在上一步中创建的部署的连接字符串,登录您的Atlas帐户并导航到 Database 部分,然后单击新部署的 Connect 按钮。

Atlas 用户界面的集群部分中的连接按钮

进入 Connect your application 部分,从 Driver 选择菜单中选择“C”,然后从 Version 选择菜单中选择与您安装的版本最匹配的版本。

选择Password (SCRAM)身份验证机制。

取消选择 Include full driver code example 选项以仅查看连接string 。

2

单击连接string右侧的按钮将其复制到剪贴板,如以下屏幕截图所示:

用户界面中连接 旁边的复制按钮stringAtlas
3

将此连接字符串粘贴到您首选文本编辑器中的文件中,并将<db_username><db_password>占位符替换为数据库用户的用户名和密码。

将此文件保存到安全位置,以便在下一步中使用。

完成这些步骤后,您就拥有了与string Atlas集群对应的连接 。

您可以创建一个应用程序,用于连接到MongoDB 部署并从 sample_mflix数据库的 movies集合中检索数据。

要学习;了解有关 sample_mflix数据库的详情,请参阅Atlas文档中的示例 Mflix 数据集

1

在Shell中,导航到要创建应用程序的位置,然后运行以下命令为此项目创建一个名为 c-quickstart 的目录:

mkdir c-quickstart

选择与操作系统对应的标签页并运行以下命令,在c-quickstart目录中创建quickstart.c应用程序文件:

cd c-quickstart
touch quickstart.c
cd c-quickstart
type nul > quickstart.c
2

将以下代码复制并粘贴到quickstart.c文件中,该文件将查询sample_mflix数据库中的movies集合:

#include <bson/bson.h>
#include <mongoc/mongoc.h>
#include <stdio.h>
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;
}
3

<connection string> 占位符替换为从本指南的“创建连接字符串”步骤中复制的连接字符串。

4

要配置应用程序,请在项目目录中创建一个 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 目标使用共享库。

5

在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驾驶员的更多信息:

后退

异步C驱动程序:公共预览版

在此页面上