mongodb客户端编程

2013-02-19 11:46 5428人阅读 评论(17) 收藏 举报

from : http://blog.csdn.net/fuxingdaima/article/details/8296405

研究了大半天,终于可以在windows的vs2008通过C++编码来实现连接mongodb服务器,从而进行其它数据库存取操作。

一、花这么多时间原因是开始时不懂得这几个东西scons,python,SpiderMonkey, boost与mongodb的关系,下面写下个人理解。
windows下编码mongodb客户端需要自已先编译生成一个mongoclient.lib,也即连接mongodb服务器所需要的C++接口类库。
1.scons
scons是一个Python写的自动化构建工具,同linux的make工具功能相似。与之关联的SConstruct文件也即类似make工具的makefile文件,
描述了编译和链接的内容和方式。在这里就是用scons这个工具来编译生成mongoclient.lib的(而不是用vs)。
2.python
Python是一种面向对象、直译式计算机程序设计语言。因为scons是用python写的那就肯定要用到它的库啦,所以在scons之前先装python.
3.SpiderMonkey
一个用C语言实现的JavaScript脚本引擎,mongodb的数据类型格式是bson,而bson是json的二进制形式的存储格式,
json是JavaScript使用的数据类型。mongodb是支持javascript脚本语言进行操作的,所以就需要一个JavaScript脚本引擎了
也就是这个SpiderMonkey了。
4.boost
 一个很强大的C++库,mongodb是用C++写,使用到了这个库,所以需要它。

二、现在说说怎么在windows下生成mongoclient.lib
1下载安装python.
http://www.python.org/getit/,或可以在别的地方下载python-2.7.3.msi
2下载安装scons.(需要python,所以要先安装python)
http://sourceforge.net/projects/scons/files/scons/2.2.0/,
并配置python脚本路径,将C:\Python27\Scripts添加到PATH中。
3下载boost,放在C:\boost中
http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.zip/download
4下载mongodb的C++ driver,比如解压在E:\mongodb-mongo-xxx\
http://dl.mongodb.org/dl/cxx-driver/
  在其主目录有个SConstruct文件就是待会用scons编译mongoclient.lib要用的,
5下载SpiderMonkey。
  这个链接是编程好的用于vs2010的https://github.com/dwight/vc2010_js,
  不过我用vs2008,贪方便先直接拿来用,之后写了些简单的连接mongodb服务器和写入、查询操作也还能用。有空再编译个vs2008版的。
  建一个与mongodb同级目录js存放下载的文件,比如E:\js\。因为那个SConstruct文件里r 查找路径是../js/
6东西下全了,可以编译了。
 cmd命令行进入E:\mongodb-mongo-xxx\,
 输入命令:scons mongoclient.lib

稍等会,如果编译成功就可以在E:\mongodb-mongo-xxx\目录下见到mongoclient.lib文件了。

三、在vs2008编写客户端

1新建工程,加入代码

[cpp] view plaincopy
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include "dbclient.h"
  4. // g++ tutorial.cpp -lmongoclient -lboost_thread -lboost_filesystem -o tutorial
  5. using namespace mongo;
  6. void printIfAge(DBClientConnection& c, int age) {
  7. auto_ptr<DBClientCursor> cursor = c.query("tutorial.persons", QUERY( "age" << age ).sort("name") );
  8. while( cursor->more() ) {
  9. BSONObj p = cursor->next();
  10. cout << p.getStringField("name") << endl;
  11. }
  12. }
  13. void run() {
  14. DBClientConnection c;
  15. c.connect("localhost:30000"); //"192.168.58.1");
  16. cout << "connected ok" << endl;
  17. BSONObj p = BSON( "name" << "Joe" << "age" << 33 );
  18. c.insert("tutorial.persons", p);
  19. p = BSON( "name" << "Jane" << "age" << 40 );
  20. c.insert("tutorial.persons", p);
  21. p = BSON( "name" << "Abe" << "age" << 33 );
  22. c.insert("tutorial.persons", p);
  23. p = BSON( "name" << "Samantha" << "age" << 21 << "city" << "Los Angeles" << "state" << "CA" );
  24. c.insert("tutorial.persons", p);
  25. c.ensureIndex("tutorial.persons", fromjson("{age:1}"));
  26. cout << "count:" << c.count("tutorial.persons") << endl;
  27. auto_ptr<DBClientCursor> cursor = c.query("tutorial.persons", BSONObj());
  28. while( cursor->more() ) {
  29. cout << cursor->next().toString() << endl;
  30. }
  31. cout << "\nprintifage:\n";
  32. printIfAge(c, 33);
  33. }
  34. int main() {
  35. try {
  36. run();
  37. }
  38. catch( DBException &e ) {
  39. cout << "caught " << e.what() << endl;
  40. }
  41. return 0;
  42. }

要把boost的目录和mongodb的C++driver的client目录包含进来,如:c:/boost;E:\mongodb-mongo-xxx\client

还要增加这个附加依赖库:ws2_32.lib mongoclient.lib(记得加路径)
2打开mongodb服务器,port为30000
 再运行刚编译的客户端即可看到连接上了。

mongodb客户端编程相关推荐

  1. 客户端编程和服务器端编程有什么区别?

    本文翻译自:What is the difference between client-side and server-side programming? I have this code: 我有以下 ...

  2. 《MongoDB入门教程》第04篇 MongoDB客户端

    本篇我们介绍 MongoDB 客户端工具 mongo 的使用. mongo shell mongo shell 是一个用于连接 MongoDB 的交互式 JavaScript 接口.mongo she ...

  3. go语言之进阶篇http客户端编程

    1.http客户端编程 示例: http_server.go package mainimport ("fmt""net/http" )//w, 给客户端回复数 ...

  4. Qt中的TCP客户端编程

    文章目录 1 Qt中的TCP客户端编程 1.1 TCP客户端编程介绍 1.2 QTcpSocket的同步编程 1.3 QTcpSocket的异步编程 1 Qt中的TCP客户端编程 1.1 TCP客户端 ...

  5. ASP.NET AJAX客户端编程之旅(二)——知其所以然

    摘要 在上一篇文章中,做了一个"Hello!ASP.NET AJAX"的小例子,但是并没有对其中的技术做解释.这一篇中,将探讨一下使用ASP.NET AJAX框架在客户端调用后台代 ...

  6. hadoop-HA集群搭建,启动DataNode,检测启动状态,执行HDFS命令,启动YARN,HDFS权限配置,C++客户端编程,常见错误

    本篇博文为整理网络上Hadoop-HA搭建后出来的博客,参考网址为:http://blog.chinaunix.net/uid-196700-id-5751309.html 3. 部署 3.1. 机器 ...

  7. kafka java编程demo_Kafka简单客户端编程实例

    今天,我们给大家带来一篇如何利用Kafka的API进行客户端编程的文章,这篇文章很简单,就是利用Kafka的API创建一个生产者和消费者,生产者不断向Kafka写入消息,消费者则不断消费Kafka的消 ...

  8. 最佳的MongoDB客户端管理工具

    <最佳的MongoDB客户端管理工具> 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一个好的MongoD ...

  9. Redis系列(三)-Redis发布订阅及客户端编程

    阅读目录 发布订阅模型 Redis中的发布订阅 客户端编程示例 0.3版本Hredis 发布订阅模型 在应用级其作用是为了减少依赖关系,通常也叫观察者模式.主要是把耦合点单独抽离出来作为第三方,隔离易 ...

最新文章

  1. Dedecms5.7搜索结果页空白无内容的解决方法
  2. Oracle根据日期计算某月的天数
  3. python 代理ip验证_Python 快速验证代理IP是否有效,再也不用担心被封IP了!
  4. Linux下常用日志分析工具
  5. s:action,s:param的用法
  6. MySQL之日期时间处理函数_MySQL之日期时间处理函数
  7. 使用SQL Server 发送邮件
  8. 如何查看、备份电脑隐藏的恢复分区
  9. python词组语义相似度_文本匹配,语义相似度,匹配相似短语/单词python语义wordNet模糊匹配...
  10. 网站后台输入密码错误
  11. TensorFlow之激活函数(8)
  12. POJ1338 Ugly Numbers(解法二)【废除!!!】
  13. c#“集合已修改;可能无法执行枚举操作”
  14. matlab官方中文网站
  15. Unicode 字符编码表
  16. fMRI数据分析处理原理及方法
  17. 蛋白组学质谱检测实验
  18. java银生宝接口开发_银生宝代付和网关渠道
  19. Python科研绘图——介绍
  20. 护肤品html作业,聚美优品美容产品热点.html

热门文章

  1. 大江论坛服务器维护,2020年9月22日定期维护解读
  2. 《道德情操论》与《中庸》--《可以…
  3. 2023愚人杯-Comedy
  4. iOS 获取系统全部图片
  5. MVC、MVP、MVVM三种区别及适用场合
  6. 【C语言】预处理超级详细解析
  7. day10:多态,文件
  8. vivo 微服务 API 网关架构实践
  9. 南开c语言程序设计作业答案,南开19春学期(1709、1803、1809、1903)《C语言程序设计》在......
  10. c语言brr17,再说。brbr迷糊中,只听身边