MongoDB C++ Driver

MongoDB 的 C++ 客户端开发包
授权协议 Apache-2.0
开发语言 C/C++ Python
所属分类 数据库相关、 数据库调整和优化
软件类型 开源软件
地区 不详
投 递 者 拓拔泉
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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环怎么处理:记录一边尝试过的次数 下次选的时候选择尝试次数少的 第三个问题:介绍渲染管线 实际场景阴影怎么渲染:移动相机 第四个问题:如何判断扇形技能是否击中敌人:向量点乘,划分象限求余弦值 第五个问题:快速判断阶乘的大小:区间逼近法 整体体验:前几个问题还行 后面的基本就是顺着