mongo-c-driver 是 MongoDB 官方的 C++ 语言客户端开发包。
使用示例代码如下:
#include <cstdint> #include <iostream> #include <vector> #include <bsoncxx/json.hpp> #include <mongocxx/client.hpp> #include <mongocxx/stdx.hpp> #include <mongocxx/uri.hpp> using bsoncxx::builder::stream::close_array; using bsoncxx::builder::stream::close_document; using bsoncxx::builder::stream::document; using bsoncxx::builder::stream::finalize; using bsoncxx::builder::stream::open_array; using bsoncxx::builder::stream::open_document; int main() { /* 初始化,创建一个客户端连接 */ mongocxx::instance instance {}; /* This should be done only once. */ mongocxx::uri uri( "mongodb://localhost:27017" ); mongocxx::client client( uri ); /* 访问指定的数据库和集合 */ mongocxx::database db = client["mydb"]; mongocxx::collection coll = db["test"]; /* 创建一个BSON文档 */ /* * { * "name" : "MongoDB", * "type" : "database", * "count" : 1, * "versions": [ "v3.2", "v3.0", "v2.6" ], * "info" : { * "x" : 203, * "y" : 102 * } * } */ auto builder = bsoncxx::builder::stream::document {}; bsoncxx::document::value doc_value = builder << "name" << "MongoDB" << "type" << "database" << "count" << 1 << "versions" << bsoncxx::builder::stream::open_array << "v3.2" << "v3.0" << "v2.6" << close_array << "info" << bsoncxx::builder::stream::open_document << "x" << 203 << "y" << 102 << bsoncxx::builder::stream::close_document << bsoncxx::builder::stream::finalize; /* 插入文档到集合 */ bsoncxx::stdx::optional<mongocxx::result::insert_one> result = coll.insert_one( doc ); /* * 查询集合中的文档 * 1、查找一个 */ bsoncxx::stdx::optional<bsoncxx::document::value> maybe_result = coll.find_one( document {} << finalize ); if ( maybe_result ) { std::cout << bsoncxx::to_json( *maybe_result ); } /* 2、查找全部 */ mongocxx::cursor cursor = coll.find( document {} << finalize ); for ( auto doc : cursor ) { std::cout << bsoncxx::to_json( doc ) << "\n"; } /* 3、指定过滤条件查询一个 */ bsoncxx::stdx::optional<bsoncxx::document::value> maybe_result = coll.find_one( document {} << "i" << 71 << finalize ); if ( maybe_result ) { std::cout << bsoncxx::to_json( *maybe_result ) << "\n"; } /* 4、获取与筛选器匹配的所有文档 */ mongocxx::cursor cursor = coll.find( document {} << "i" << open_document << "$gt" << 50 << "$lte" << 100 << close_document << finalize ); for ( auto doc : cursor ) { std::cout << bsoncxx::to_json( doc ) << "\n"; } /* * 更新集合中的文档 * 1、更新单个文件 */ coll.update_one( document {} << "i" << 10 << finalize, document {} << "$set" << open_document << "i" << 110 << close_document << finalize ); /* 2、更新多个文档 */ bsoncxx::stdx::optional<mongocxx::result::update> result = coll.update_many( document {} << "i" << open_document << "$lt" << 100 << close_document << finalize, document {} << "$inc" << open_document << "i" << 100 << close_document << finalize ); if ( result ) { std::cout << result->modified_count() << "\n"; } /* * 删除集合中的文档 * 1、删除单个文档 */ coll.delete_one( document {} << "i" << 110 << finalize ); /* 2、删除多个文档 */ bsoncxx::stdx::optional<mongocxx::result::delete_result> result = coll.delete_many( document {} << "i" << open_document << "$gte" << 100 << close_document << finalize ); if ( result ) { std::cout << result->deleted_count() << "\n"; } /* * 创建索引 * 索引结构 { "index1": "<type>", "index2": <type> } * index1、index2为索引的字段 * 对于升序索引,指定<type>为1. * 对于降序索引,指定<type>为-1. */ auto index_specification = document {} << "i" << 1 << finalize; collection.create_index( std::move( index_specification ) ); return(0); }
1.1 安装mongodb 注意了,MongoDB可以对应多个版本的驱动,但是mongodb C++驱动对依赖mongodb C驱动的支持却是一一对应的,一定注意好自己的版本信息. 由于我的系统是ubuntu16的,只能好像安装mongodb=3.6版本。mongodb C++驱动选择了3.4.1,却要求mongodb c 驱动的版本必须是 1.13.0 [ubuntu16下安装mongodb 3
安装boost 1.60 位置: c:\boost_1_60_0 下载安装mongo c dirver http://mongoc.org/?jmp=docs#documentation http://mongoc.org/libmongoc/current/installing.html Building on Windows 先编译 libbson 进入libsson的目录: cd mongo
1. 程序安装 预安装 需要先安装依赖库OpenSSL,来建立ssl连接到MongoDB RedHat / Fedora系统: $ sudo yum install pkg-config openssl-devel cyrus-sasl-devel Debian / Ubuntu系统: $ sudo apt-get install pkg-config libssl-dev libsasl2-de
mongodb c driver的使用总结(1) 1、初始化mongoc 非线程安全,只需调用一次 mongoc_init(); 2、设置日志回调 static void log_handler (mongoc_log_level_t log_level, const char* log_domain, const char* message, void* user_data
CentOS7.2上安装mongodb cxx驱动笔记 1.如果CMAKE版本低于3.2版本,要先升级CMAKE 到3.2版本,安装c++驱动要求升级到v3.2以上版本 删除现有版本: yum remove cmake wget http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz tar zxvf cmake-3.2.2.tar.gz cd cma
一、安装 有关特定的平台上安装MongoDB C驱动程序的详细说明,请参官方文档:http://mongoc.org/. MongoDB C 驱动程序的安装、编译:http://www.cnblogs.com/oloroso/p/5740431.html 二、启动MongoDB 要运行本教程中的例子,MongoDB 必须安装运行在本地主机(localhost),且使用默认端口27017。要检查Mo
mongodb步骤: 1.在google里搜索mongodb找到官方网站去下载:http://www.mongodb.org/ 2.解压:tar zvxf mongodb-linux-i686-2.4.3.tgz生成一个mongodb-linux-i686-2.4.3文件夹 3.进入mongodb-linux-i686-2.4.3/bin文件夹,里面的二进制文件都可以执行。 eg:#./mongo
最近在选用NOSQL数据库的时候最终选择了mongodb, 感觉其各方面都很优秀, 于是为服务器增加了一组mongodb的接口, 以方便LUA逻辑层使用. 驱动方面选用了官方指定的C DRIVER, 大家有兴趣的可以直接去mongodb的官网上查找, 不过查看了其mongo_find接口发现为同步调用, 这在服务器并发应用方面会受到限制, 通常服务器为了提高并发处理效率会使用异步接口.
上一篇文章介绍了如何编译c driver的源代码,这里介绍下如何使用 我们直接使用了c driver中的example中的代码 编译前需要配置些文件,比如导入库什么的。 我们需要把先前的4个文件bson.lib bson.dll mongoc.lib mongoc.dll导入工程中。 在vc++目录中知名mongo.h的路径。并在程序中include这个文件。 运行后会出现一个错误: 说 mong
mongoDB现在是一个使用比较多的数据库,因为近日想存一些东西,所以,使用了一下。 首先,安装mongoDB服务器端。现在出到了3.0,可以直接到官网下载。然后启动。 如果想用命令行看的话,就到/usr/local/mongo/bin 使用./mongoc,就进到了命令行中。 前面的很多人介绍,我就不细说了。 然后是需要用类库操作mongoDB。我用的是mongo c driver,下载地址在h
前言 本人属于CMake小白,如有不足还望各位大神斧正. Linux 下使用 Cmake与 Windows下使用控制台命令大致相同,可自行研究 Mongo-C-Driver : 可以使用Cmake命令行及Cmake-GUI进行编译 Mongo-CXX-Driver : 可以使用Cmake命令行进行编译,Cmake-GUI会报无法找到bson库,添加路径以后依然无法生成工程,还希望大神指点迷津 Li
自我介绍 项目 很多C++的特性, 比如vector和List区别、static的作用、linux内存结构、栈和堆等等时间太久记不清了基本都是八股 手撕:旋转链表 总共40mins吧好像
一面 项目,讲一下线程池如何设计的 tcp和udp区别 tcp有哪些机制 浏览控制有哪些机制 线程同步方式 c++多态是什么 虚函数是什么 菱形继承有什么问题 c++11特性 智能指针 右值引用,move 使用过哪些stl容器 算法 判断二叉树是否为对称二叉树 分割数组为连续子序列 感觉方向不是很匹配,做qt开发的,一直显示面试中,泡池子了
20221011 13:50一面(电话面试) 1、 自我介绍 2、 云量仪项目介绍一下(问的特别详细,包括实现方式、传输形式、遇到的问题解决方式等) 3、 C++特性 4、 多态的实现方式 5、 虚函数和纯虚函数 6、 项目中多线程的实现方式,如何同步的 7、 项目中Socket传输是怎么实现的,如何保证你传输的数据完整; 8、 Ep
一面(3.9) 讲讲了解到c++11新特性。 std::string缺陷(不了解)。 智能指针与原生指针开销一样吗?(答智能指针是一个类,有默认的拷贝、构造函数等,shared_ptr还多了一个引用计数),说这是基于类层面的,让我基于对象回答。不是很了解再次询问,说单看10000个智能指针和原生指针开销一样吗?有点懵了说一样。 浮点数存储方式。 MD5,Base64。 http1.0/1 2 3做
一共50min 1.自我介绍 2.讲一下多态 3.static用法 4.右值引用 5.函数指针 6.什么情况下出现野指针,野指针报什么错,什么情况下不会报错 7.C++11用过哪些新特性 8.共享指针的原理,怎么实现的 9.map和set的区别 10.用过什么进程间通信方式 11.共享内存的接口、使用方法、原理 12.epoll和select的优缺点 13.ET和LT 14.有没有遇到过死锁,怎么
Example: 101basic 客户端使用和服务同样的通信协议来发送请求和获取响应。 type Client struct { Conn net.Conn Plugins PluginContainer // 包含过滤后的或者不可导出的字段 } Conn 代表客户端与服务器之前的连接。 Plugins 包含了客户端启用的插件。 他有这些方法: func (c
开发者可以使用原生bricks引擎进行渲染以及手机QQ功能的调用。 开发者也可以使用第三方引擎(cocos、laya、白鹭)进行开发。 第三方引擎的实现方式为基于bricks的webgl接口进行封装,具有较高的灵活性,但渲染性能会欠缺。 如开发者对性能要求更高,推荐使用bricks引擎的原生渲染。 注意: iOS 在手 Q 770 版本禁用了 webGL,会导致界面卡在 99% 加载界面,开发者忽
前排提醒:一点编程语言相关的都没有问 第一个问题:贪吃蛇用什么结构存储:双向队列 第二个问题:a星算法了解过吗 碰到大c环怎么处理:记录一边尝试过的次数 下次选的时候选择尝试次数少的 第三个问题:介绍渲染管线 实际场景阴影怎么渲染:移动相机 第四个问题:如何判断扇形技能是否击中敌人:向量点乘,划分象限求余弦值 第五个问题:快速判断阶乘的大小:区间逼近法 整体体验:前几个问题还行 后面的基本就是顺着