MongoDB C++开发环境搭建linux平台

本文介绍如何在Slackware13.37x86环境下从源码构建MongoDB及其C++ Driver,并通过示例程序验证其功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 初次接触MongoDB C++开发,发现官方单独提供的C++ Driver源码包似乎有些问题,经一番折腾后方才顺利的能跑,故在此记下第一篇。
  我使用的开发环境Slackware 13.37 x86,既然官方单独提供的C++ Driver有些问题那就全部MongoDB源码构建出.a库吧,首先从(http://downloads.mongodb.org/src/mongodb-src-r1.8.2.tar.gz)处下载MongoDB的源码包,编译后包括了MongoDB本身和C++ Driver库。

  安装前的准备:

  • mongodb依赖js库,slackware下可以从slackbuilds.org用sbopkg安装上即可。
  • mongodb依赖boost库,slackware安装的开发工具库中已经包含。
  • mongodb使用scons构建工具,故需要安装scons,slackware下也可以从slackbuilds.org安装

  把mongodb安装在$HOME/usr/mongo:

$ mkdir -p ~/usr/mongo

$ tar xvf mongodb-src-r1.8.2.tar.gz

$ scons --prefix=$HOME/usr/mongo --full install

  执行完后查看$HOME/usr/mongo下三个目录bin、include、lib。

  启动mongodb:

$ mkdir -p ~/usr/mo_data

$ cd ~/usr/mongo/bin

$ ./mongo --dbpath=$HOME/usr/mo_data

  写个简单的小程序测试下生成的libmongoclient.a。

复制代码
  
#include < iostream >
#include
" client/dbclient.h "

using namespace mongo;

void run() {
DBClientConnection c;
c.connect(
" localhost " );
}

int main() {
try {
run();
cout
<< " connected ok " << endl;
}
catch ( DBException & e ) {
cout
<< " caught " << e.what() << endl;
}
return 0 ;
}
复制代码

$ g++ mon2.cpp -I ~/usr/mongo/include/mongo/ ~/usr/mongo/lib/libmongoclient.a -lboost_thread -lboost_filesystem -lboost_program_options

$ ./a.out
connected ok

  第二个程序执行简单的插入。

复制代码
  
#include < iostream >
#include
" client/dbclient.h "

using namespace mongo;

int main() {

DBClientConnection conn;
BSONObj p
= BSONObjBuilder().append( " name " , " Joe " ).append( " age " , 33 ).obj();

try {
conn.connect(
" localhost " );
cout
<< " connected ok " << endl;
}
catch ( DBException & e ) {
cout
<< " caught " << e.what() << endl;
}

conn.insert(
" tutorial.persons " , p);
conn.insert(
" tutorial.persons " , p);
conn.insert(
" tutorial.persons " , p);
return 0 ;
}
复制代码

$ g++ mon3.cpp -I ~/usr/mongo/include/mongo/ ~/usr/mongo/lib/libmongoclient.a -lboost_thread -lboost_filesystem -lboost_program_options

$ ./a.out

connected ok

   运行mongo客户端验证插入:

$ cd ~/usr/mongo/bin

$ ./mongo

MongoDB shell version: 1.8.2
connecting to: test
> show dbs
admin   (empty)
local   (empty)
tutorial        0.0625GB
> use tutorial
switched to db tutorial
> db.persons.find()
{ "_id" : ObjectId("4e11a582b918b66ebf3835fb"), "name" : "Joe", "age" : 33 }
{ "_id" : ObjectId("4e11a582b918b66ebf3835fc"), "name" : "Joe", "age" : 33 }
{ "_id" : ObjectId("4e11a582b918b66ebf3835fd"), "name" : "Joe", "age" : 33 }
>

  OK,这样使用和开发都可以了。

### 如何在C++中使用MongoDB驱动程序进行数据库操作 #### MongoDB C++驱动简介 MongoDB 提供了一个专门用于 C++ 的驱动程序 (mongo-cxx-driver)[^3],该驱动允许开发人员通过标准的 C++ 接口与 MongoDB 数据库交互。此驱动支持现代 C++ 特性,并提供了线程安全的操作接口。 #### 插入数据到 MongoDB 中 `insert_one()` 是当前推荐使用的函数来执行单条记录的插入操作[^1]。以下是 `insert_one()` 函数的一个简单示例: ```cpp #include <mongocxx/client.hpp> #include <mongocxx/instance.hpp> #include <bsoncxx/json.hpp> int main() { mongocxx::instance instance{}; // 初始化实例 mongocxx::client client{mongocxx::uri{"mongodb://localhost:27017"}}; auto collection = client["test_db"]["test_collection"]; bsoncxx::document::value document = bsoncxx::builder::stream::document{} << "name" << "Alice" << "age" << 30 << bsoncxx::builder::stream::finalize; collection.insert_one(document.view()); } ``` 上述代码展示了如何创建一个简单的文档并通过 `insert_one()` 方法将其插入到指定集合中。 #### 查看数据 虽然没有直接提到 `view()` 函数的具体实现细节,但在实际应用中可以通过查询操作获取数据。下面是一个基本的查询示例: ```cpp auto cursor = collection.find({}); // 查询所有文档 for (auto&& doc : cursor) { std::cout << bsoncxx::to_json(doc) << "\n"; } ``` 这段代码会遍历集合中的所有文档并将它们打印出来。 #### 编译环境搭建 为了成功编译和运行基于 mongo-cxx-driver 的应用程序,通常需要完成以下几个步骤: 1. **安装依赖项**:确保已安装 Boost 库以及必要的构建工具链。 2. **下载并编译驱动器源码**:按照官方指南或者参考资料中的说明依次编译 `mongo-c-driver` 和 `mongo-cxx-driver`[^5]。 具体命令可能类似于以下内容(Linux 平台为例): ```bash git clone https://github.com/mongodb/mongo-c-driver.git cd mongo-c-driver mkdir cmake-build && cd cmake-build cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF .. make && sudo make install # 下载 cxx driver git clone https://github.com/mongodb/mongo-cxx-driver.git --branch releases/stable --depth 1 cd mongo-cxx-driver/build cmake .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DLIBBSON_DIR=/path/to/libbson/share/cmake/libbson-1.0/ make && sudo make install ``` #### 注意事项 - 使用最新版驱动可以享受更好的性能优化和支持新特性[^4]。 - 如果是在 Windows 上工作,则需额外注意 Visual Studio 环境配置及相关路径设置问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值