Mongodb c++ API的测试和封装

本文介绍了如何使用 MongoDB 的 C++ 驱动进行数据库操作,包括插入、更新、查询文档及 GridFS 文件操作的具体实现。

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

安装好c++的驱动后,对API进行了测试。官方api:https://mongodb.github.io/mongo-cxx-driver/api/legacy-1.0.0/

参考的代码博文:https://www.cnblogs.com/edgarli/archive/2013/04/27/3046699.html

往数据库中保存数据必须创建BSONObj类的对象,BSONObj下各组件都可以叫做BSONElement对象。使用BSONObjBuilder构造各种BSON对象,用BSONObjIterator来遍历BSON对象。

 

BSONObj bsonEmpty = BSONObj();
BSONObj b = BSON("name"<<"xyj"<<"age"<<18);

insertDocument(&conn,collection,b);
//removeDocument(&conn,collection,b);

BSONObj data = updateData(&conn,collection,b);
string name = data.getStringField("name");
int age = data.getIntField("age");

BSONObj  resetAge = BSONObjBuilder().appendElements(b).append("sex","male").obj();

 

//查询符合条件的元组

auto_ptr<DBClientCursor> cursor = conn.query( collection , BSONObj() );
int count = 0;
while (cursor->more())
{
count++;
BSONObj temp = cursor.next();
}

 

GridFS和GridFile类

一切都不如看源码来的实在,API也凑合。

GridFile类:存储于mongodb里的文件数据类,官方注释: wrapper for a file stored in the Mongo database。用于获取相关文件的内部数据,下载,判断是否存在等

GridFS类:mongodb的文件操作类,官方注释:GridFS is for storing large file-style objects in MongoDB.。用于GridFS数据库的连接,文件的上传、查找、删除等

附上相关代码:

string dbName = "PDFS";
string fileName = "D:\\PPT.pdf";
string remoteName = "up.pdf";
GridFS gf(conn,dbName);
gf.storeFile(fileName,remoteName);

GridFile gFile = gf.findFile(remoteName);
bool flag = gFile.exists();
gFile.write("D:\\down.pdf");

 

转载于:https://www.cnblogs.com/hanmolabi/p/8120792.html

最近重构并优化了一套后端服务的代码: 1. 设计并开发高效的C++对象池算法,时间复杂度为 O(1) 在整个重构框架中,对象池是负责管理内存的底层基本模块 2. 利用命令模式的思想开发 Redis 子模块 抽象出方便高效的接口提供给上层程序员使用 3. 利用组合模式装饰模式的思想开发 MongoDB 数据库查询条件装饰器 将查询条件数据库 MongodbModule 数据模型进行解耦合 4. 抽象出一套 MongoDB Module 结果集接口 通过模板特化技术实现 string/int 等不同索引类型的结果集 5. 开发 AbstractMongodbModule 类处理通用的 MongoDB 数据库表数据操作 数据库中不同的表都有自己的 AbstractMongodbModule 子类对应 6. 用 Perl 开发自动代码生成器,上层程序员对照数据库表结构写 .tmpl 配置文件, 自动生成该数据库表的 MongodbModule 子类,减轻程序员新增表时的工作量 7. 结合 Redis 模块 MongoDB 模块,开发 HierarchicalModule 分层数据模型 构造一个 Redis 缓存层 + MongoDB 持久层的后台 Server 架构 并通过简单方便的接口供上层程序员使用,具体的数据分层处理对上层程序员是黑盒的 8. 设计并开发整套缓存层使用的 KEY 规则,方便缓存更新 结合公司的数据订阅系统进行 Redis缓存层 + MongoDB 持久层数据更新功能 9. 重构后的分层数据架构比原有接口效率提高 5 - 400 倍(返回数据记录条数从 150 - 5 条) 绝大部分时间后端接口需要获取记录个数在 50 以内,所以效率提升在 100 倍左右
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值