zoukankan      html  css  js  c++  java
  • [原]编译MongoDB,C++连接MongoDB测试

    1、C++ driver download

    地址:http://dl.mongodb.org/dl/cxx-driver/

    这里下载最新的cxx-driver/mongodb-linux-x86_64-v2.0-latest.tgz版本;

    注:编译驱动之前需要安装pcre 和 scons 。并且g++版本需要4.0之后;

            并且需要boost,关于boost的安装可以参考前面一篇文章:http://blog.csdn.net/yuandianlws/article/details/7027538

    2、 编译

    [root@cdh3-0005 mongo-cxx-driver-v2.0]# scons

    编译之后会出现libmongoclient.so

    [root@cdh3-0005 mongo-cxx-driver-v2.0]# ls
    authTest       clientTest       firstExample       libmongoclient.a       LICENSE.txt       SConstruct       whereExample
    client       config.log       httpClientTest       libmongoclient.so       mongo       secondExample 

    libmongoclient.so 拷贝至 /usr/local/lib下

    [root@cdh3-0005 mongo-cxx-driver-v2.0]#cp libmongoclient.so /usr/local/lib

    另外,由于目前mongo-cxx-driver没有32位的driver包,所以你可以编译MongoDB的源代码进行安装,里面包括了C++的driver

    不过它需要下载依赖包  
    ftp://ftp.mozilla.org/pub/mozilla.org/js
    cd src
    make
    make install
    编译mongoDB并install
    tar -xvf mongodb-src-r2.0.4.tar.gz
    cd mongodb-src-r2.0.4 
    scons --full install

    3、测试

    #include <iostream>
    #include "mongo/client/dbclient.h"
    using namespace std;
    using namespace mongo;

    void run() {
    DBClientConnection c;
    c.connect("localhost"); //add port,c.connect("localhost:27017")
    }

    int main(void)
    {
    try {
    run();
    cout<<"connected ok"<<endl;
    }catch(DBException& e){
    cout<<"caught"<<e.what()<<endl;
    }
    return 0;

    }
    编译:
    [root@:~/svn/mongoDB]#g++ main.cpp -lmongoclient -lboost_thread -lboost_filesystem -lboost_program_options

    运行:
    [root@:~/svn/mongoDB]#./a.out
    connected ok

    另一个测试:

    #include <iostream>
    #include "mongo/client/dbclient.h"

    using namespace mongo;

    int main() {

    DBClientConnection conn;
    BSONObj p = BSONObjBuilder().append("name", "Joe").append("age", 33).obj();

    try {
    conn.connect("localhost");
    cout << "connected ok" << endl;
    } catch( DBException &e ) {
    cout << "caught " << e.what() << endl;
    }

    conn.insert("tutorial.persons", p);
    conn.insert("tutorial.persons", p);
    conn.insert("tutorial.persons", p);
    return 0;
    }

    g++ -o mongo_insert mongo_insert.cpp -lmongoclient -lboost_thread -lboost_filesystem -lboost_program_options

    $ ./insert mongoconnected ok

      运行mongo客户端验证插入:

    $ cd ~/usr/mongo/bin

    $ ./mongo

    MongoDB shell version: 1.8.2
    connecting to: test
    > show dbs
    admin (empty)
    local (empty)
    tutorial 0.0625GB
    > use tutorial
    switched to db tutorial
    > db.persons.find()
    { "_id" : ObjectId("4e11a582b918b66ebf3835fb"), "name" : "Joe", "age" : 33 }
    { "_id" : ObjectId("4e11a582b918b66ebf3835fc"), "name" : "Joe", "age" : 33 }
    { "_id" : ObjectId("4e11a582b918b66ebf3835fd"), "name" : "Joe", "age" : 33 }
    >

      OK,这样使用和开发都可以了。

    参考:MongoDB C++开发环境搭建    http://www.cnblogs.com/logicbaby/archive/2011/07/04/2097697.html


    作者:yuandianlws 发表于2011-12-1 15:25:39 原文链接
    阅读:2909 评论:0 查看评论
  • 相关阅读:
    棋盘型动态规划 之 CODE[VS] 1220 数字三角形
    棋盘型动态规划 之 CODE[VS] 1219 骑士游历 1997年
    棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组
    棋盘型动态规划 之 CODE[VS] 1010 过河卒 2002年NOIP全国联赛普及组
    [实验]自举?只不过是电容和二极管捣的乱
    [嵌入式]I2C协议指东
    [语法]C语言中二维数组做输入参数
    深入类方法。
    今天周六祝大家休息开心,我还在奋斗....
    我们一起来一把.....现在学习真的好累,一天下来脑袋要炸
  • 原文地址:https://www.cnblogs.com/yuandianliws/p/3570621.html
Copyright © 2011-2022 走看看