mongodb的一些基本操作以及c++驱动的简单方法

来源:互联网 发布:sql union 列数不等 编辑:程序博客网 时间:2024/06/01 20:50
一、一些数据操作
1、集合中的字段不需要提前设置,可以随时增减。
2、增加字段update({文档筛选条件},{$set:{新字段,如果字段名已存在则替换}})
3、删除字段upate({文档筛选条件},{$unset:{字段名:""}}
4、修改字段,同2
5、修改子字段,字段名可以用点操作符描述但是必须用引号括起来如
{id:100, item:{cnt:100}}
update({id:100},{$set:{"item.cnt":1}})
二、c++驱动操作方法
0、数据库连接对象 DBClientConnection
连接数据库 DBClientConnection::connect("host:port")
插入DBClientConnection::insert
修改DBClientConnection::update
1、符合对象生成如{id:100, item:{cnt:100}}
BSON("id" << 100 << "item" << BSON("cnt"<<100)) )
2、BSONObj转json格式字符串方法 BSONObj::toString().c_str()
3、二进制数据的写入
BSONObjBuilder::appendBinData( 字段名, 数据长度,数据类型(一般用BinDataGeneral), 数据指针)
目前好像不能用BSON宏来创建
4、数据库查询方法
auto_ptr<DBClientCursor> cursor = c.query( 集合名, [查询条件,类型同为BSONObj] )
while( cursor->more() )
{
获取文档内容:BSONObj obj = cursor->next();
获取内容:obj.getIntField("");
类似的方法还有getStringField,getFloatField,getBoolField等
获取符合对象:obj.getObjectField()返回类型为BSONObj
读取二进制数据:
先判定字段是否存在obj.hasField(""),
获取BSONElement ele = obj.getField(""),
int len;
const char* buff = ele.binData( len );
len中会被写入buff的长度
}
三、一些有用的参考网站
http://api.mongodb.org/cplusplus/current/index.html
http://www.mongoing.com/
http://www.yiibai.com/mongodb/
0 0