`
阿尔萨斯
  • 浏览: 4364076 次
社区版块
存档分类
最新评论

MongoDB C++应用 简单例子

 
阅读更多

假定你已经有了MongoDB server,并且工作在Ubuntu上,安装了GCC,下面的C++程序可以帮助你快速进入能够使用MongoDB的状态。

#include <cstdlib>
#include <mongo/client/connpool.h>
using namespace std;
using namespace mongo;

void SaveStatus(mongo::DBClientBase& session, string const& display_id, string const& status) {
    

    BSONObjBuilder condition;
    condition.append("display_id", mongo::OID(display_id));

    BSONObjBuilder status_field;
    status_field.append("status", status);

    BSONObjBuilder data;
    data.append("$set", status_field.obj());

    session.update("mydb.mycoll", mongo::Query(condition.obj()), data.obj());
}

/*
 * 
 */
int main(int argc, char** argv) {
    mongo::ScopedDbConnection con("localhost", 5000);//timeout is 5000
    mongo::DBClientBase& session = con.conn();
    

    
    BSONArrayBuilder display_ids;
    display_ids.append(mongo::OID("5061f915e4b045bab5e0c957"));

    BSONObjBuilder in_condition;
    in_condition.append("$in", display_ids.arr());
    
    BSONObjBuilder message_condition;
    message_condition.append("display_id", in_condition.obj());
    message_condition.append("status", "sending");
    
    BSONObjBuilder sortBuilder;
    sortBuilder.append("_id", 1);

    mongo::Query query(message_condition.obj());
    mongo::Query query2(query);
    mongo::Query query_with_sort(query.sort(sortBuilder.obj()));

    BSONObjBuilder update_field;
    update_field.append("status", "waiting");

    BSONObjBuilder set_field;
    set_field.append("$set", update_field.obj());
    session.update("mydb.mycoll", query2, set_field.obj(), false, true);
    
    
    con.done();
    return 0;
}


提示:

1.SaveStatus函数内部演示了简单的设置某个字段值的用法。

2.main函数中演示了更加复杂的用法,用$in作为update语句的查询条件。

3.最后的con.done()函数调用是必须的,因为连接必须回到池中。

4.session.update的查询条件不能带sort,否则更新不会成功,因此可以看到我的代码中专门复制了一个query2对象用于update, 而query_with_sort 可以用于一般的查询(find)。

5.BSONObject的obj方法只能被调用一次,第二次程序就会crash。

6.mongo::OID用来将字符串转换成OID对象,也就是常见的_id的值

7.有时候当碰到编译错误的时候,可以试一下这个头文件:

#include "mongo/client/dbclient.h"



分享到:
评论

相关推荐

    C++ Driver for MongoDB.zip

    MongoDB C++驱动程序是连接MongoDB数据库的一种关键组件,它是用C++编写的,允许开发者使用C++语言与MongoDB进行...通过理解驱动的工作原理和使用方法,开发者可以构建高效、可靠的C++应用,与MongoDB数据库无缝集成。

    mongodb编译文档及编译结果.7z

    MongoDB是一种流行的开源...对于希望在C++应用中集成MongoDB的开发者来说,这是一个宝贵的资源。通过学习和实践这些步骤,开发者可以更深入地理解MongoDB的C++接口,并熟练掌握在C++环境中操作MongoDB数据库的技巧。

    mongoDB数据库的c++接口与库文件VS2015

    首先,`mongo C++` 指的是MongoDB的C++驱动程序,它允许开发者在C++应用中直接与MongoDB通信。这个驱动程序提供了丰富的API,包括插入、查询、更新和删除文档等操作。驱动程序的核心是`mongocxx`库,它包含了一系列...

    Mongodb实例Demo

    "mongo-c-driver"是MongoDB官方提供的C语言接口,允许开发者在C或C++应用中直接与MongoDB服务器通信。这个驱动包含了头文件和库文件,适用于VS2017 Release环境。通过这个驱动,你可以执行诸如连接数据库、创建集合...

    Mongodb视频.txt

    MongoDB的这些特性使其成为Web应用、大数据处理、实时分析等场景的理想选择。 #### 二、Node.js简介 Node.js是一个开放源代码、跨平台的JavaScript运行环境,可以在服务器端运行JavaScript代码。Node.js使用了事件...

    高可用mongodb集群搭建

    为了构建一个高可用的MongoDB集群,我们需要确定每个组件的数量,例如:三个mongos实例、三个config server实例和三个shard server实例(每个shard有一个副本集和一个仲裁者)。这样的配置确保了即使某些节点出现...

    Mongodb基础知识详解(值得珍藏).pdf

    数据库则是MongoDB的基本存储单元,一个实例可以包含多个数据库,每个数据库又包含多个集合。 MongoDB的一大特色是它的查询语言,它支持类似于面向对象的查询语法,能够执行类似于关系数据库的单表查询。此外,...

    mongoDB_课程讲义_1.0

    - **数据库**:多个集合的集合,是 MongoDB 的最高逻辑层,一个实例可包含多个数据库。 2. 安装与启动 在 Windows 上,可以通过安装 MSI 包设置 MongoDB。安装完成后,将 bin 目录添加到环境变量 PATH,以便于启动 ...

    MongoDB导出查询结果到文件例子

    命令 `mongo 192.168.2.201:41211/dc_user dump.js &gt; feed.json` 连接到远程 MongoDB 实例(IP 地址 192.168.2.201,端口 41211,数据库名 `dc_user`),运行 `dump.js` 中的脚本,并将输出重定向到 `feed.json` ...

    用python爬取网页并用mongodb保存.docx

    在这个例子中,爬虫首先连接到本地运行的 MongoDB 实例,然后获取指定 URL 的网页内容。通过 BeautifulSoup 解析网页后,提取出标题和内容,将它们作为键值对存储在一个文档中。最后,这个文档被插入到名为 "web...

    高可用的MongoDB集群

    MongoDB是一款强大的、开源的、模式自由的文档型数据库,采用C++语言开发。它具备众多特性,使其成为处理多种类型数据的理想选择。 - **面向集合的存储**:能够有效地存储对象及JSON格式的数据。 - **动态查询**:...

    MongoDB

    总的来说,MongoDB是一个强大且灵活的数据库系统,适用于各种应用场景,从简单的网站后端到大规模的数据处理平台。通过对源码的研究和利用提供的工具,我们可以更好地管理和优化MongoDB实例,以满足业务需求。而PMS...

    mongodb说明介绍快速入门

    MongoDB 是一款使用C++语言编写的开源文档型数据库。它采用分布式文件存储方式,能够为Web应用提供高性能且可扩展的数据存储解决方案。MongoDB 的核心优势在于其能够轻松处理大量数据,并在高负载情况下通过增加更多...

Global site tag (gtag.js) - Google Analytics