首页 > C/C++, MongoDB, 数据库, 资料 > MongoDB c++驱动安装与使用

MongoDB c++驱动安装与使用

2015年9月15日
分类: C/C++, MongoDB, 数据库, 资料 标签: ,
发表评论 阅读评论
  1. 安装
    • 获取源码:git clone https://github.com/mongodb/mongo-cxx-driver.git,解压
    • 安装编译工具scons:yum install -y scons
    • 编译:进入mongo-cxx-driver目录,执行:scons –prefix=/home/work/mongo/ –sharedclient install
    • 驱动已被安装在/home/work/mongo中
  2. 使用
    • 编译示例程序
      #include <cstdlib>
      #include <iostream>
      #include "mongo/client/dbclient.h" // for the driver
      
      void run() {
        mongo::DBClientConnection c;
        c.connect("localhost");
      }
      
      int main() {
          mongo::client::initialize();
          try {
              run();
              std::cout << "connected ok" << std::endl;
          } catch( const mongo::DBException &e ) {
              std::cout << "caught " << e.what() << std::endl;
          }
          return EXIT_SUCCESS;
      }
    • gcc tutorial.cpp -I./mongo/include -L./lib/ -L./mongo/lib -lmongoclient -Wl,-rpath=./lib/ -o tutorial
    • 上面的编译选项中,mongo、lib与tutorial.cpp位于同一目录,mongo即是第一步中指定的安装目录,lib存放其他依赖库,如boost。
    • 向数据库插入文档

      using mongo::BSONElement;
      using mongo::BSONObj;
      using mongo::BSONObjBuilder;

      BSONObjBuilder b;
      b.append(“Name”, “Liuyj”);
      b.append(“Age”, 30);
      BSONObj p = b.obj();

      try
      {
          c.insert(“Db.UserInfo”, p);
          string err = c.getLastError();
          if(!err.empty())
          {
              cout << “failed to insert into Db.UserInfo: ” << err;
              return 1;
          }
      }
      catch(const mongo::DBException &e)
      {
          cout << “exception occurred: ” << e.toString();

          return 2;
      }

  3. 遇到的问题
    • mongo::client::initialize()出现类似下面的崩溃
      Thread [1] 2560 [core: 2] (Suspended : Signal : SIGSEGV:Segmentation fault) 
              0x7fffffffdd80  
              ~_Function_base() at functional:2,030 0x448930  
              ~function() at functional:2,174 0x448930    
              mongo::client::Options::~Options() at options.h:32 0x448930 
              main() at main.cpp:17 0x43bf66
      stackoverflow的这个帖子给出了答案:应用程序和mongodb驱动使用了不一致的编码选项-std=c++11造成的。去掉这个选项就ok了。
    • 其他
  4. 其他
小赢理财-众安保险本息保障

零一积流|IT参考 原创文章,转载请注明出处: http://www.it-refer.com/2015/09/15/mongodb-c-driver-usage/comment-page-1


您可能需要这些【参考资料】:
  1. pysn_liuyj
    2015年9月15日11:59 | #1

    需要预装boost

您必须在 登录 后才能发布评论.