C++ 是一种强大、高性能的编程语言,以其效率、多功能性和广泛使用而备受赞誉。鉴于 MongoDB 和 C++ 都很受欢迎,它们能够很好地协同工作也就不足为奇了。无论您是在本地或内部部署的 MongoDB 安装上进行开发,还是使用 MongoDB Atlas 转向云优先,MongoDB C++ Driver 都可以轻松地将 MongoDB 集成到您的开发过程中。
您是否正在努力找出该与您正在开发的 C++ 应用程序搭配使用的数据库?深入阅读本指南,探索 C++ 与 MongoDB 的无缝集成,利用 C++ 的优势以及 MongoDB 数据库系统的灵活性和可扩展性。
目录
为什么要将 MongoDB 与 C++ 结合使用
MongoDB 稳坐最流行 NoSQL 数据库技术的榜首。它是一个文档数据库,用于构建具有高可用性和可扩展性的应用程序。MongoDB 成立于 2007 年,在开发者社区中拥有一批世界各地的追随者。MongoDB 始终致力于为开发者提供出色的用户体验,这加上其所有其他功能,也使 MongoDB 成为全球开发者的挚爱。C++ 开发者可从使用 MongoDB 中获益匪浅,原因如下:
- 灵活的模式:与 SQL 不同,MongoDB 的文档模型允许集合中的不同文档具有不同的结构化数据。这种灵活性与 C++ 的动态特性非常一致,可以更改数据布局而无需修改整个数据模型,从而提高工作效率。
- 性能: MongoDB 内置了对分片和复制的支持,提供了高可用性、横向扩展和地理分布。因此,它是需要稳健性和高性能的 C++ 应用程序的理想选择。
- 可扩展性:MongoDB 专为轻松横向扩展而设计,其中涉及为您的应用程序添加更多服务器。相比之下,SQL 数据库通常依赖于垂直扩展(更强大的硬件),这可能会带来限制。
- 易于使用:MongoDB 为 CRUD 操作提供了一个非常简单直观的 API,可以与 MongoDB C++ 驱动程序轻松使用。MongoDB 中使用的类似 JSON 的文档直接映射到 C++ 中的数据类型,提供了一个自然的数据操作环境。
如果您在构建新内容并需要数据库,请考虑从一开始就使用MongoDB Atlas。Atlas 为您提供完全托管的云原生数据库服务,附带多种功能,包括 全文搜索、向量搜索、图表、合作伙伴集成,以及更多功能。
有趣的事实:MongoDB 数据库是用 C++ 语言编写的!
MongoDB 和 C++ 入门
要开始将 MongoDB 与您的 C++ 应用程序一起使用,您需要安装 MongoDB C++ 驱动程序,该驱动程序充当 MongoDB 与您的 C++ 应用程序之间的接口。该驱动程序也称为 mongocxx 或 mongo-cxx-driver 。
有多个选项可用于安装 MongoDB C++ 驱动程序:
- 从源代码构建和安装。
- 使用包管理器(vcpkg、conan、homebrew、apt 等)进行安装。
- 使用 MongoDB C++ 驱动程序的官方 Docker 映像 进行安装。
请参阅安装页面上的详细文档,该文档涵盖了上述所有方法。我们还提供了在 Windows 上从源代码构建和安装的分步指南。我们还提供了一个 10 分钟的视频教程以帮助您入门。
您可以使用所选的 IDE(例如 Visual Studio、Visual Studio Code 或 CLion)设立 MongoDB C++ 驱动程序。C++ 驱动程序安装还包括一个CMake 配置文件包,因此您可以使用 CMake 的find_package命令导入 C++ 驱动程序的 CMake 目标并链接到 C++ 驱动程序(作为共享库)。
创建您的第一个 Atlas 集群
一旦C++驱动程序全部设立好,您还需要一个数据库。
您可以创建帐户并按照本指南在 MongoDB Atlas 上创建免费套餐集群。它还将展示如何插入样本数据。
连接到您的 Atlas 集群
完成上一部分后,您应该有一个在 Atlas 中部署的新 MongoDB 集群、一个新的数据库用户和密码,以及已加载到集群中的一些样本数据集。
现在,可以使用驱动程序连接到数据库了。为了建立数据库连接,您的驱动程序需要有关如何连接的说明。这些指令称为连接字符串。您可以获取在上一步中创建的集群和用户名的连接字符串,方法是进入 Atlas 帐户,导航到数据库部分,然后单击“连接”。
将会出现一个弹出窗口,提示您选择驱动程序和版本。填充这两个下拉菜单后,可以使用生成的数据库连接字符串(以“mongdb+srv://”开头)连接到您的集群。请注意,您需要将内容替换为您自己的用户名和密码!
您可以使用此连接字符串从应用程序运行对 MongoDB 集群的查询。您可以在 这里 找到关于获取连接字符串的更深入说明。下面分享了连接到 MongoDB Atlas 集群并执行网络探测(ping)命令的示例代码: