c++ 讀寫mongodb

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()));
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章