MongoDB 的 C++ 客户端开发包 MongoDB C++ Driver

Apache-2.0
C/C++ Python 查看源码»
跨平台
2018-03-15
乌合之众

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);
}
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

install mongodb C++ driver

linux安装mongo c++ driver,出现Checking for C++ library boost_thread-mt... no的解决办法 build mongo-cxx-driver-v2.2 从mongodb官方网站下载mongo c++ driver程序包:mongodb-linux-x...

2012/10/08 17:00
754
0
Centos 安装MongoDB C++ dirver

Centos 安装MongoDB C++ dirver 前言: 图片居然显示不了, 后面在添加图片了 官网地址:https://www.mongodb.org/ 驱动下载地址: https://docs.mongodb.org/ecosystem/drivers/?_ga=1.8158...

2015/09/16 13:38
238
0
mongodb c++接口

mongod用户创建 groupadd mongod adduser -s /bin/false -d /bin/null --no-create-home -c mongod -g mongod mongod root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin da...

2015/08/07 18:19
956
0
在Windows上编译MongoDB C Driver

在Windows 2008操作系统上编译MongoDB数据库的C语言驱动程序,生成动态链接库(bson.dll,mongoc.dll)

2013/08/07 10:59
3.3K
1
Play Mongo 模块简介

Play Mongo 是什么? Play Mongo 是一个专门为 Play Framework 开发的 MongoDB 模块, 该项目基于 MongoDB 官方的 Scala 驱动,并且提供了更多的实用功能,例如, 更简洁多样的数据库交方式 ...

07/01 10:54
23
0
java build mongodb driver

git bash here $ cd /c/s $ git clone https://github.com/mongodb/mongo-java-driver.git (记得打开FQ工具,不然很慢) $ cd mongo-java-driver/ 最后是编译,这个工程支持用ant, maven, 或gra...

2014/05/17 14:52
272
0
mongoDB依赖

from:http://stackoverflow.com/questions/29729331/how-to-resolve-classnotfoundexception-com-MongoDB-connection-bufferprovider On the mongo driver page here: http://mongodb.github...

2016/11/10 15:55
63
0
MongoDB Java

MongoDB Java 环境配置 在 Java 程序中如果要使用 MongoDB,你需要确保已经安装了 Java 环境及 MongoDB JDBC 驱动。 本章节实例时候 Mongo 3.x 以上版本。 你可以参考本站的Java教程来安装J...

2016/11/28 08:39
35
1
对MongoDB中MongoClient类的吐槽

因为看到Mongodb Getting Started with Java Driver文档中“New in version 2.10.0: The MongoClient class is new in version 2.10.0. For releases prior to that, please use the Mongo c...

2013/11/19 12:03
5.2K
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部