mongocxx::pool *pool_ = new mongocxx::pool(mongocxx::uri(mongodb://192.168.2.11:27017/?minPoolSize=3));
try{
std::vector<uchar> data_encode;
cv::imencode(".jpg",data.snapshot,data_encode);
bsoncxx::types::b_binary imgBinary;
imgBinary.bytes = data_encode.data();
imgBinary.size = data_encode.size();
auto builder = bsoncxx::builder::stream::document{};
builder << "_id" << data.id
<< "filed1" << data.cameraId
<< "filed2" << data.snapshotUrl
<< "bbox" << bsoncxx::builder::stream::open_array
<< data.bbox.x << data.bbox.y << data.bbox.width << data.bbox.height << bsoncxx::builder::stream::close_array
<< "ts" << data.ts
<< "scene_id" << data.sceneId
<< "id_in_scene" << data.id_in_scene
<< "natural_person" << data.natural_person
<< "binary_img" << imgBinary;
if(!data.feature.empty()){
builder << "feature" << bsoncxx::builder::stream::open_array
<< [&](bsoncxx::builder::stream::array_context<> arr){
for(auto &feature : data.feature){
arr << feature;
}
} << bsoncxx::builder::stream::close_array
<< "attribute" << bsoncxx::builder::stream::open_array
<< [&](bsoncxx::builder::stream::array_context<> arr){
for(auto &attribute : data.attribute){
arr << attribute;
}
} << bsoncxx::builder::stream::close_array
<< "norm" << data.norm;
}
if(!data.bodyId.empty()){
builder << "body_id" << data.bodyId;
}
bsoncxx::document::value doc_value = builder << bsoncxx::builder::stream::finalize;
auto mongoClient = pool_->acquire();
mongocxx::collection coll = (*mongoClient)[dbName_][collectionName_];
mongocxx::stdx::optional<mongocxx::result::insert_one> result = coll.insert_one(doc_value.view());
}catch(std::exception &e){
MongoDaoLogger::instance().log("info", "snap face mongo dao insert2MongoDB: %s", std::string(e.what()));
}