mongo-c-driver-0.94.2的安装和使用
来源:互联网 发布:云计算股票 编辑:程序博客网 时间:2024/05/21 18:57
最近由于mongodb作为olap需要导出csv,需要某些人做分析,然后用mongo自带的mongoexp命令导出时
发现有谢value里头有“\n”所以导致导出csv的时候出现自动的非法换行。
用shell处理有些繁琐,所以索性用C写个简易的程序导所需的数据。
1.安装mongo-c-driver-0.94.2
在http://docs.mongodb.org/manual/applications/drivers/下载drivers for Ctar -zxvf mongo-c-driver-0.94.2.tar.gzcd mongo-c-driver-0.94.2./configure --prefix=/usr/local/mongo-drimakemake install
2.基础环境
cd /usr/local/mongo-drilsbin include lib sharevi Makefilecat Makefile INCLUDE += -I./include/libmongoc-1.0/INCLUDE += -I./include/libbson-1.0/LIB += -luuid -lsslLIB += -L./lib -lmongoc-1.0OP += -o mainall: gcc $(INCLUDE) $(LIB) $(OP) main.c -g
3.构建基本C程序测试
# vim main.c[root@mongoDR new]# cat main.c#include <stdio.h>#include <stdlib.h>#include "mongoc.h"#include "bson.h"int main(int argc, char *argv[]) {mongoc_client_t *client;mongoc_collection_t *collection;mongoc_cursor_t *cursor;bson_error_t error;const bson_t *doc;const char *uristr = "mongodb://127.0.0.1/";const char *collection_name = "cai.test";char *str;char *dbname = "cai";bson_t query;bson_t query_double;mongoc_init ();client = mongoc_client_new (uristr);if (!client) {fprintf (stderr, "Failed to parse URI.\n");return EXIT_FAILURE;}bson_init (&query);bson_init (&query_double);double a = 3;double b = 11;bson_append_double(&query_double,"$gte", -1, a);bson_append_double(&query_double,"$lt", -1, b);bson_append_document(&query, "hello", -1, &query_double);#if 0 bson_append_utf8 (&query, "hello", -1, "world", -1);#endifcollection = mongoc_client_get_collection(client, dbname, collection_name);cursor = mongoc_collection_find (collection, MONGOC_QUERY_NONE, 0, 0, 0, &query, NULL, NULL);while (!mongoc_cursor_error (cursor, &error) && mongoc_cursor_more (cursor)) {if (mongoc_cursor_next (cursor, &doc)) {str = bson_as_json(doc, NULL);fprintf (stdout, "%s\n", str);bson_free (str);}}if (mongoc_cursor_error (cursor, &error)) {fprintf (stderr, "Cursor Failure: %s\n", error.message);return EXIT_FAILURE;}bson_destroy (&query);mongoc_cursor_destroy (cursor);mongoc_collection_destroy (collection);mongoc_client_destroy (client);return EXIT_SUCCESS;}
4.测试数据和编译
测试数据> show dbsadmin (empty)cai 0.078GBlocal 0.078GBtest (empty)> db.cai.test.find();{ "_id" : ObjectId("536b9370cccf064e0df720f1"), "hello" : -1 }{ "_id" : ObjectId("536b937ecccf064e0df720f2"), "world" : -1 }{ "_id" : ObjectId("536b9406cccf064e0df720f3"), "wangyl" : -1 }{ "_id" : ObjectId("536b9412cccf064e0df720f4"), "caiweg" : 10 }{ "_id" : ObjectId("536b974ecccf064e0df720f5"), "hello" : -1 }{ "_id" : ObjectId("536b9753cccf064e0df720f6"), "hello" : 3 }{ "_id" : ObjectId("536b9758cccf064e0df720f7"), "hello" : 6 }{ "_id" : ObjectId("536b975ccccf064e0df720f8"), "hello" : 10 }{ "_id" : ObjectId("536b9760cccf064e0df720f9"), "hello" : 8 }{ "_id" : ObjectId("536ba654cccf064e0df720fa"), "hello" : "a" }
编译程序运行之
pwd/usr/local/mongo-drimake// 此行是输出效果 #gcc -I./include/libmongoc-1.0/ -I./include/libbson-1.0/ -luuid -lssl -L./lib -lmongoc-1.0 -o main main.c -g./main# ./main2014/05/09 00:23:01.0247: [15436]: INFO: cluster: Client initialized in direct mode.{ "_id" : { "$oid" : "536b9753cccf064e0df720f6" }, "hello" : 3.000000 }{ "_id" : { "$oid" : "536b9758cccf064e0df720f7" }, "hello" : 6.000000 }{ "_id" : { "$oid" : "536b975ccccf064e0df720f8" }, "hello" : 10.000000 }{ "_id" : { "$oid" : "536b9760cccf064e0df720f9" }, "hello" : 8.000000 }
至此,小程序当然还没写完,但是主要说的还是mongo的C驱动程序!
后续还需要将bson数据转换成结构体,然后将值中的“\n”去掉,导出成CSV格式就可以收工了!
############################
本文由笔者原创
作者:john
转载请注明出处
0 0
- mongo-c-driver-0.94.2的安装和使用
- mongodb安装和mongo-c-driver的安装使用
- mongo c driver 使用总结
- 小白在Ubuntu安装mongoDB 与 mongo-c-driver
- Windows系统上安装生成Mongo-cxx-driver的lib和include
- mongo c driver 在linux下编译使用
- [Mongo]PyMongo安装和使用
- Mongo的安装及使用
- mongo的安装和部署
- mongo 的安装和卸载
- Mac 源码安装 mongo-php-driver
- java mongo driver使用(一,mongo连接)
- c++操作mongodb Windows 下 mongo-c-driver vs2013编译 附使用实例
- 使用c# Mongo Driver 完成嵌套查询
- MongoDB java客户端mongo-java-driver使用
- ubuntu Mongo DB的安装与使用
- Windows下mongo的安装和启动
- mongo安装使用
- 在Java上实现RESTful Web Services
- Thinkphp html:list
- 织梦修改数据库密码
- 二级指针的疑惑
- 优酷爱奇艺等已叫停引进海外剧:英美剧日本动漫皆受影响
- mongo-c-driver-0.94.2的安装和使用
- Ubuntu 10.04 Jmeter多机联测配置参数
- POJ_3264_Interval Tree 最大最小值之差
- makefile学习经验(1)----初识Makefile
- android 文件、图片上传功能实现
- setNeedsDisplay与setNeedsLayout
- ga
- 哪些技能,经较短时间的学习,就可以给人的生活带来巨大帮助?
- Eclipse 中快捷键 ctrl+alt+上箭头 冲突