数据库

 首页 > 数据库 > MongoDB > MongoDB数据库的客户端编程

MongoDB数据库的客户端编程

分享到:
【字体:
导读:
         摘要:研究了大半天,终于可以在windows的vs2008通过C++编码来实现连接mongodb服务器,从而进行其它数据库存取操作。一、花这么多时间原因是开始时不懂得这几个东西scons,python,SpiderMonkey,boost与mongodb的关系,下面写下个人理解。windows下编码mongodb客...

MongoDB数据库的客户端编程

研究了大半天,终于可以在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:Python27Scripts添加到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新建工程,加入代码

#include "stdafx.h"  

#include   

#include "dbclient.h"  

using namespace mongo;  

void printIfAge(DBClientConnection& c, int age) {  

    auto_ptr cursor = c.query("tutorial.persons", QUERY( "age" << age ).sort("name") );  

    while( cursor->more() ) {  

        BSONObj p = cursor->next();  

        cout << p.getStringField("name") << endl;  

    }  

}  

void run() {  

    DBClientConnection c;  

    c.connect("localhost:30000");   

    cout << "connected ok" << endl;  

    BSONObj p = BSON( "name" << "Joe" << "age" << 33 );  

    c.insert("tutorial.persons", p);  

    p = BSON( "name" << "Jane" << "age" << 40 );  

    c.insert("tutorial.persons", p);  

    p = BSON( "name" << "Abe" << "age" << 33 );  

    c.insert("tutorial.persons", p);  

    p = BSON( "name" << "Samantha" << "age" << 21 << "city" << "Los Angeles" << "state" << "CA" );  

    c.insert("tutorial.persons", p);  

    c.ensureIndex("tutorial.persons", fromjson("{age:1}"));  

    cout << "count:" << c.count("tutorial.persons") << endl;  

    auto_ptr cursor = c.query("tutorial.persons", BSONObj());  

    while( cursor->more() ) {  

        cout << cursor->next().toString() << endl;  

    }  

    cout << "nprintifage:n";  

    printIfAge(c, 33);  

}  

int main() {  

    try {  

        run();  

    }  

    catch( DBException &e ) {  

        cout << "caught " << e.what() << endl;  

    }  

    return 0;  

}  

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

 还要增加这个附加依赖库:ws2_32.lib mongoclient.lib(记得加路径)
2打开mongodb服务器,port为30000
 再运行刚编译的客户端即可看到连接上了。
MongoDB数据库的客户端编程
分享到:
Java操作MongoDB数据库的封装类
Java操作MongoDB数据库的封装类MongoDB Java 通用方法 最近写了一个针对MongoDB的一些常用操作的公共类,希望对初学者有帮助。 package model.dao; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.bson.types.Ob...
使用spring管理MongoDB数据库
使用spring管理MongoDB数据库安装Spring for Mongodb Spring项目为方便对Mongodb的操作,建立了spring-data的子项目,地址在: http://www.springsource.org/spring-data/mongodb,目前版本是1.0.0M2阶段,已支持对Mongodb的一系列基本操作。我们先从http://www.springsource.org/spring-data/mongodb中下载相关的包...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……