MongoDB 2.4.1 C++ driver编译和使用
2013-04-12 18:04
381 查看
这个版本仍然没有解决不能编译动态库的问题,MongoDB这帮人发什么神经?
原来两个绕过的方法也不行了。
只有使用静态库了。
下载最新版的代码,编译
scons --prefix=/usr install
旧版的C++代码会编译报错,因为ScopedDbConnection的构造函数变成了私有,必须通过静态方法来创建。所以调用代码要做相应调整。
我的CMake工程配置如下:
target_link_libraries(service ${Boost_LIBRARIES} booster loki cryptopp mongoclient)
应该没有问题了。分享一下我的C++封装类:
#ifndef BUSINESS_UTIL_MONGO_SESSION_H_
#define BUSINESS_UTIL_MONGO_SESSION_H_
#include <string>
#include <memory>
#include <mongo/client/connpool.h>
using std::string;
class MongoSession {
public:
/**
* 从连接池中获取连接,如果没有则创建一个
*/
MongoSession(string const& host, double socketTimeout=0);
/**
* 归还连接到池中
*/
~MongoSession();
/**
* 返回已经获得的连接
*/
mongo::DBClientBase& GetDBClientBase();
private:
std::auto_ptr<mongo::ScopedDbConnection> con_;
};
#endif
使用方法很简单: shared_ptr<MongoSession> mongoSession = MongoSessionFactory::GetSession();
BSONObjBuilder condition;
condition.append("address", address);
mongo::Query query_condition(condition.obj());
BSONObj result = mongoSession->GetDBClientBase().findOne("your_collection", query_condition);
return !result.isEmpty();
原来两个绕过的方法也不行了。
只有使用静态库了。
下载最新版的代码,编译
scons --prefix=/usr install
旧版的C++代码会编译报错,因为ScopedDbConnection的构造函数变成了私有,必须通过静态方法来创建。所以调用代码要做相应调整。
我的CMake工程配置如下:
target_link_libraries(service ${Boost_LIBRARIES} booster loki cryptopp mongoclient)
应该没有问题了。分享一下我的C++封装类:
#ifndef BUSINESS_UTIL_MONGO_SESSION_H_
#define BUSINESS_UTIL_MONGO_SESSION_H_
#include <string>
#include <memory>
#include <mongo/client/connpool.h>
using std::string;
class MongoSession {
public:
/**
* 从连接池中获取连接,如果没有则创建一个
*/
MongoSession(string const& host, double socketTimeout=0);
/**
* 归还连接到池中
*/
~MongoSession();
/**
* 返回已经获得的连接
*/
mongo::DBClientBase& GetDBClientBase();
private:
std::auto_ptr<mongo::ScopedDbConnection> con_;
};
#endif
#include "business/util/mongo_session.h" using namespace mongo; MongoSession::MongoSession(string const& host, double socketTimeout): con_(mongo::ScopedDbConnection::getScopedDbConnection(host, socketTimeout)) { } MongoSession::~MongoSession() { con_->done(); } DBClientBase& MongoSession::GetDBClientBase() { return con_->conn(); }
使用方法很简单: shared_ptr<MongoSession> mongoSession = MongoSessionFactory::GetSession();
BSONObjBuilder condition;
condition.append("address", address);
mongo::Query query_condition(condition.obj());
BSONObj result = mongoSession->GetDBClientBase().findOne("your_collection", query_condition);
return !result.isEmpty();
相关文章推荐
- windows平台下安装、编译、使用mongodb C++ driver 正常运行
- mongodb c++ driver 2.0编译使用
- mongodb c++ driver 2.0编译使用
- MongoDB在MFC下使用C++驱动编译错误的解决
- MongoDB 使用C++ driver 3.1.1 使用案例1
- mongodb C++ driver编译报错解决方案
- RedHat Linux上编译mongodb c++ driver
- WinXP编译mongodb c++ driver
- MongoDB C++ 2.4.5 driver 编译安装问题
- Visual Studio 2010 编译 MongoDB C++ Client Driver
- 编译MongoDB C++ driver时启用-fPIC
- MongoDB 4.6.1 c++ driver 编译
- VS2015编译连接mongodb(mongodb C++ driver)
- Visual Studio 2010 编译 MongoDB C++ Client Driver
- MongoDB C++ Driver 编译参数
- Visual Studio 2010 编译 MongoDB C++ Client Driver(看这里,终于解决了编译问题,谢谢大神的分享)
- MongoDB系列三:mongoDB C/C++驱动使用(New C++11 driver)
- mongodb c++ driver(2.53)windows编译
- mongodb c++ driver编译问题
- MongoDB C++ Driver编译