博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB C Driver Building on Windows
阅读量:6440 次
发布时间:2019-06-23

本文共 5157 字,大约阅读时间需要 17 分钟。

一、编译mongodb c driver:

  需要先安装OpenSSL:(参见:http://bbs.aircheng.com/read-2222-1)

  步骤:(MongoDB不需要授权登陆的话,就不需要OpenSSL,直接跳到第11

    1.下载ActivePerl  5.24.0.2400 

     

    2.安装ActivePerl软件 

     没什么好说的,一步一步安装即可。安装成功后,设置环境变量。 
     例如我将ActivePerl安装在C:\Perl64\目录下,则选中Path,单击编辑按钮,

     将C:\Perl64\site\bin;C:\Perl64\bin;加入其中,确认即可。

     运行”CMD“命令,使用cd命令将运行目录指向perl安装目录的eg文件夹,

     执行“perl example.pl”若显示“Hello from ActivePerl!”,则说明Perl安装成功,

     可以开始使用Perl的相关命令来进行OpenSSL的安装了。 

    3.安装Microsoft Visual Studio 2010 

     将C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64;

     加入系统环境变量,具体以你安装的路径为准,

     注意(64位)是 bin\amd64; 不是 bin; 多么痛的领悟。

    4.安装NASM 

      
     当前稳定版本为:2.12.02 
      
     

 

    将nasm的路径添加至环境变量

    例如我的nasm安装在 C:\Users\lenovo\AppData\Local\NASM 目录

    

    5.下载OpenSSL 

      

     下载后,将其解压缩至C:\openssl目录下,这样做便于后续操作

     注意目录结构,不要出现openssl-1.1.0c子目录,

     而是将openssl-1.1.0c目录下的文件拷贝至C:\openssl目录下 

 

    6.初始化编译环境 

     因为Visual Studio 2010安装在目录中C:\Program Files (x86)\Microsoft Visual Studio 10.0\ 
     这里使用的是在Visual Studio Tools文件夹下的Visual Studio x64 Win64命令提示(2010)工具。 
   然后右键:以管理员身份运行
     

     进入Visual Studio 2010安装目录 C:\Program Files (x86)\Microsoft Visual Studio 10.0\中 

     执行命令:cd C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 
     执行命令:vcvars64.bat 

 

     7.openssl的源文件已解压至C:\openssl的目录中,下面开始执行Configure 

      进入openssl 目录下执行 perl Configure VC-WIN64A 
       
      执行结束后,如下图所示 
      

 

       8.执行命令:nmake 

       
      如果执行成功,则等待输入下一个命令 
       

 

      9.执行命令:nmake test 

       
      很顺利的情况下: 
      

      

      10.执行命令:nmake install 

       
      当出现下面页面的时候,证明你已成功: 
      

 

      11.编译驱动:

         http://mongoc.org/libmongoc/(api 官方文档)

       https://github.com/mongodb/mongo-c-driver(GitHub驱动源码,这个 src/libbson 文件夹里面是空的)

       驱动源码下载:https://github.com/mongodb/mongo-c-driver/releases 

       build前需下载个最新的cmake安装。

       

        

编译完成之后在c:\mongo-c-driver目录下有bin、include、lib三个文件夹,分别包含所需的dll、.h文件、lib。

在自己的项目中引入这些.h文件、lib、dll就可以使用 C API 了。

 

二、C API 的使用

#include "mongoc.h"

1.连接MongoDB:

//只能调用一次mongoc_initmongoc_init();const char *uristr = "mongodb://user:pwd@host:port/";//MongoDB不需要登录认证的话,连接字符串中的用户名:密码@可以省略。//connection to MongoDB.m_client = mongoc_client_new (uristr);if (!m_client) {	return false;}m_pCollection = mongoc_client_get_collection(m_client, "myDatabase", "mycollection");return true;

  

2.Insert操作:

bson_t query;bson_init(&query);BSON_APPEND_UTF8(&query,"name","chunxiao");BSON_APPEND_INT32(&query,"age",NULL);BSON_APPEND_DOUBLE(&query,"Price",66.0);if (!mongoc_collection_insert(m_pCollection,MONGOC_INSERT_NONE,&query,NULL,&error)){  AfxMessageBox(error.message);}bson_destroy(&query);return true;

  

 

3.Find操作:

double age1 = 20;double age2 = 22;char	name[10] = "chunxiao";int sex = 0;bson_init(&query);bson_append_document_begin(&query,"age",3,&child);bson_append_double(&child,"$gt",3,age1);bson_append_document_end(&query,&child);bson_append_document_begin(&query,"age",3,&child1);bson_append_double(&child1,"$lte",4,age2);bson_append_document_end(&query,&child1);cursor = mongoc_collection_find(m_pCollection,MONGOC_QUERY_NONE,0,0,0,&query,NULL,NULL);vector
vData;while (mongoc_cursor_next(cursor,&docFind)){ //方法一 bson_iter_t iter; bson_iter_init(&iter,docFind); if (bson_iter_find(&iter,"name")) {   strcpy(str,bson_iter_utf8(&iter,NULL));   strtest = bson_iter_utf8(&iter,NULL);   if (strcmp(strtest.c_str(),"xiaochun")==0)   {   AfxMessageBox(str);   continue;   }   strtest = strtest.substr(strtest.find_first_of("x"),2);   AfxMessageBox(str); } bson_iter_init(&iter,docFind);//顺序不一致的话,要重新初始化一下 iter,否则find不到 if (bson_iter_find(&iter,"age")) {   int f = bson_iter_int32(&iter);   sprintf(str,"%d",f);   AfxMessageBox(str); } //方法二 char *str; str = bson_as_json(docFind, NULL); vData.push_back(str);}if (mongoc_cursor_error(cursor, &error))//mongoc_cursor_error 要在 mongoc_cursor_next 之后调用,否则获取不到 error.message{ cout << "An error occurred:" << error.message << endl;  mongoc_cursor_destroy(cursor);  bson_destroy(&query);  return false;}mongoc_cursor_destroy(cursor);bson_destroy(&query);return true;

  

4.Delete操作:

double age = 21;bson_init(&query);bson_append_document_begin(&query,"age",3,&child);bson_append_double(&child,"$gt",3,age);bson_append_document_end(&query,&child);BSON_APPEND_UTF8(&query,"name","chun.xiao");if (!mongoc_collection_remove(m_pCollection,MONGOC_REMOVE_NONE,&query,NULL,&error)){  AfxMessageBox(error.message);}bson_destroy(&query);return true;

  

5.UpDate操作:

bson_init(&query);BSON_APPEND_UTF8(&query,"name","chunxiao");bson_t *docUpDate = bson_new();bson_append_document_begin(docUpDate,"$set",-1,&child);BSON_APPEND_UTF8(&child,"name","xiaochun");bson_append_document_end(docUpDate,&child);bson_init(&child);bson_append_document_begin(docUpDate,"$set",-1,&child);BSON_APPEND_UTF8(&child,"age","21");bson_append_document_end(docUpDate,&child);if (!mongoc_collection_update(m_pCollection,MONGOC_UPDATE_NONE,&query,docUpDate,NULL,&error)){  AfxMessageBox(error.message);}bson_destroy(&query);bson_destroy(docUpDate);return true;

  

百度云(13207134391):

  编译 C driver:

    MongoDB\C API\安装MongoDB以及编译 C driver

  Demo:

    MongoDB\C API\C API 操作MongoDB

 

转载地址:http://xrdwo.baihongyu.com/

你可能感兴趣的文章
无需编译、快速生成 Vue 风格的文档网站
查看>>
AtomicBoolean介绍与使用
查看>>
Elasticsearch之curl删除
查看>>
Apache Spark 内存管理详解(转载)
查看>>
JS隐藏号码中间4位
查看>>
windows下安装Rabbitmq详解
查看>>
HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误
查看>>
SQL Server索引 - 索引(物化)视图 <第九篇>
查看>>
[原创]FineUI秘密花园(一) — 为什么选择FineUI?
查看>>
这一文让你彻底理解Spring框架的意义
查看>>
消息中间件Kafka与RabbitMQ谁更胜一筹?
查看>>
CanisMinor 微信小程序工程
查看>>
手机拍照,调取相册 裁剪,上传
查看>>
当移动数据分析需求遇到Quick BI
查看>>
八皇后,回溯与递归(Python实现)
查看>>
程序员的微创业
查看>>
什么是以太坊
查看>>
刷前端面经笔记(九)
查看>>
针对前端开发可重用组件并发布到NPM
查看>>
Android组件化探索与实践
查看>>