首页 > 数据库 >MongoDB C++ gridfs worked example

MongoDB C++ gridfs worked example

时间:2023-05-30 22:01:45浏览次数:54  
标签:mongoc MongoDB MongoGridFS char client file gridfs worked example

使用libmongoc,参考:http://mongoc.org/libmongoc/current/mongoc_gridfs_t.html

#include <mongoc.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>


class MongoGridFS {
public:
    MongoGridFS(const char* db);
    ~MongoGridFS();

    void saveFile(const char* input_file_path, const char* filename);
private:
    mongoc_gridfs_t *gridfs;
    mongoc_client_t *client;
};


MongoGridFS::MongoGridFS(const char* db) {
    assert(db != NULL);
    mongoc_init ();
    /* connect to localhost client */
    client = mongoc_client_new ("mongodb://127.0.0.1:27017?appname=gridfs-example");
    assert (client);
    mongoc_client_set_error_api (client, 2);

    /* grab a gridfs handle in test prefixed by fs */
    bson_error_t error;
    gridfs = mongoc_client_get_gridfs (client, db, "fs", &error);
    assert (gridfs);
}


void MongoGridFS::saveFile(const char* input_file_path, const char* filename) {
    assert(input_file_path != NULL && filename != NULL);
    mongoc_stream_t *stream = mongoc_stream_file_new_for_path (input_file_path, O_RDONLY, 0);
    assert (stream);

    mongoc_gridfs_file_opt_t opt = {0};
    opt.filename = filename;

    /* the driver generates a file_id for you */
    mongoc_gridfs_file_t *file = mongoc_gridfs_create_file_from_stream (gridfs, stream, &opt);
    assert (file);

    mongoc_gridfs_file_save (file);
    mongoc_gridfs_file_destroy (file);
}


MongoGridFS::~MongoGridFS() {
     mongoc_gridfs_destroy (gridfs);
     mongoc_client_destroy (client);
     mongoc_cleanup ();
}


int
main (int argc, char *argv[])
{
    MongoGridFS gridfs("test2gridfs");
    gridfs.saveFile("test.py", "test.py");
    return 0;
}

 

标签:mongoc,MongoDB,MongoGridFS,char,client,file,gridfs,worked,example
From: https://blog.51cto.com/u_11908275/6382327

相关文章

  • mongodb c++ driver安装踩坑记
     安装教程:https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/installation/(1)“initializer_list”filenotfoundhttp://stackoverflow.com/questions/19493671/initializer-list-no-such-file-or-directorySinceyouareusing GCC-4.8 andyourproblemisthatyoud......
  • MongoDB学习笔记:配置文件
    本文更新于2023-05-11。使用MongoDB6.0.4。官方文档:https://www.mongodb.com/docs/manual/reference/configuration-options/Linux下配置文件为/etc/mongod.conf。#后面的内容作为注释忽略。大多数参数与mongod的命令行参数对应,如命令行参数为不需指定值的开关则设置为true或f......
  • Spider理论系列--MongoDB(二)
    六、INSERT使用insert db.集合名.insert(文档)#如果是添加数据建议使用insert插入多条数据: db.集合名.insert([文档])#注意一定要加[]否则可能只会把第一条文档插入进去db.user.insert({'name':'lisi','age':20})db.user.insert([{'name':'lisi','age':......
  • 如何将数据从MySQL/MongoDB中迁移至云开发数据库
    本篇文章从MySQL、MongoDB迁移到云开发数据库,其他数据库迁移也都大同小异~迁移大致分为以下几步?:从MySQL、MongoDB将数据库导出为JSON或CSV格式创建一个云开发环境到云开发数据库新建一个集合在集合内导入JSON或CSV格式文件Mysql迁移到云开发数据库为了方便,我们使用Na......
  • mongodb 概念
    下表将帮助您更容易理解Mongo中的一些概念:SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引tablejoins 表连接,MongoDB不支持primarykeyprimarykey主键,MongoDB自动......
  • mongodb 实例
    packagecom.jaeson.mongodb;importjava.util.ArrayList;importjava.util.List;importorg.bson.Document;importcom.mongodb.Block;importcom.mongodb.MongoClient;importcom.mongodb.MongoCredential;importcom.mongodb.ServerAddress;//importcom.mongod......
  • Spider理论系列--MongoDB(二)
    NoSQLMongodb下载mongodb的版本,两点注意根据业界规则,偶数为稳定版,如1.6.X,奇数为开发版,如1.7.X32bit的mongodb最大只能存放2G的数据,64bit就没有限制性能BSON格式的编码和解码都是非常快速的。它使用了C风格的数据表现形式,这样在各种语言中都可以高效地使用。NoSQL(NoSQL=NotOnly......
  • WEB漏洞—SQL注入之Oracle,MongoDB等注入
     1.明确注入数据库类型、权限2.明确提交方法、参数类型等高权限可以执行文件读取,低权限就老老实实获取数据,最终目的都是获取网站权限 常见数据库类型mysql,access,mssql,mongoDB,postgresql,sqlite,oracle,sybase等1、Access注入Access与mysql结构,除access之外,其他数据库结......
  • MongoDB基本操作记录
    MongoDB基本操作记录连接Mongo:mongo--host127.0.0.1--port27017-uroot-p123456显示数据库列表:showdbs选择数据库:useCX_tb显示所有表名:db.getCollectionNames()删表:db.xxx.drop()显示帮助:db.xxx.help()插入一条数据:db.xxx.insert({"id":"1","add_time":&q......
  • Part2: DDPM as Example of Variational Inference
    很多次翻看DDPM,始终不太能理解论文中提到的\(\text{VariationalInference}\)到底是如何在这个工作中起到作用。五一假期在家,无意间又刷到徐亦达老师早些年录制的理论视频,没想到其中也有介绍这部分的内容。老师的上课方式总是娓娓道来,把每一步都讲解得很仔细。本文记录一下个人对......