正确修改C 中的Mongo :: BSONOBJ
Correctly modifying mongo::BSONObj in C++
我写了一个使用mongoDB进行数据存储的软件。查询返回数据后,BSONOBJ用于许多不同的位置。
目前,我需要为查询返回的bsonobj的C 侧修改增加可能性。由于后面的部分很大,我只能修改查询部分,但是查看bsonobj和bsonelement参考文献,我没有看到正确编辑bsonobj的方法,而无需在每个编辑中重新构建它。
修改代码看起来与此相似:
mongo::BSONObj obj=GetQueryResults();
vector<mongo::BSONObj> mods=GetMods();
for(auto mod:mods){
mod=mod.remove_field("_id");
std::set<std::string> fields;
mod.getFieldNames(fields);
for(auto & field: fields){
if(obj.hasElement(field)){
// rebuild with field modified?
// this includes both value replacement
// and something like incrementing etc.
}else{
// rebuild with extra field?
}
}
}
我研究的一个选项之一是创建一个BSONObjBuilder
并修改它,但是它没有提供查询对象的选项,并且文档没有对现有字段和append()
。
我想您想用自己的想法做一些偷偷摸摸的事情。但是可悲的是,如果我没记错的话,您将无法修改成品BSON对象。我的意思是完成。
顺便说一句,这不是一个问题。
如果要过滤查询结果,请使用MongoDB聚合框架。就像您只需要大量文档中的用户名称一样。
这将为您提供帮助。
客户端命令参考(VER:2.3.2)
客户端命令的示例
相关文章:
- 使用 mongo c++ 驱动程序查询嵌套的 BSON 文档
- 使用CMake ExternalProject_Add构建mongo cxx驱动程序
- 如何在mongo db上从gmlib存储mpz_t
- Mongo C++ 驱动程序 - 如何更改超时配置
- 如何将Mongo Shell命令转换为Mongocxx语法
- 如何在mongo :: bsonobjbuilder中创建字符串通配符
- 如何使用 mongo-cxx-driver 的 **insert** 函数将包含静态数据的多维数组插入到数据库中
- 构建 MONGO C++ 驱动程序
- C++正在写入mongo,字符串字段在聚合管道中不起作用
- Mongo C++批量操作
- 如何使用Mongo-CXX-Driver设置Visual Studio项目设置
- 正确修改C 中的Mongo :: BSONOBJ
- 在Windows上编译Mongo DB客户端示例时,链接器错误
- 用c++将数组数组插入mongo中
- Mongo新的c++驱动程序错误
- 将BSONObj对象存储在std::vector中会与大型文档发生冲突
- 对 mongo::curTimeMillis64() 的未定义引用
- mongo C++驱动程序中的BSON_ARRAY()为空
- 无法构建 32 位 Mongo DB C++驱动程序
- 如何将 BSONObj 插入另一个 BSONObj in C++ (Mongo)