合肥电子商务公司排名:mongodb c++ 起步
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 05:37:54
最近准备把空闲时间都发在mongodb的研究上,因此将有一系列的文章记录这个过程。 直接从官网下载了1.2.1的windows32版本:http://downloads.mongodb.org/win32/mongodb-win32-i386-1.2.1.zip解压之后写了个runserver.bat文件:E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\bin\mongod.exe --dbpath E:\lenkydatasource\mongodb\1.2.1\lenkytest\db --port 55555执行该文件即可启动mongodb服务程序。解压文件内还包含了c++的头文件和库文件
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\include
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\lib利用它们来写mongodb客户程序:
首先需要有boost,而mongodb-win32-i386-1.2.1.zip里提供的mongodb库文件
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\lib\mongoclient.lib
是用vs2008 + boost_1_35_0编译出来的,懒得重新编译mongodb,因此也对应的使用vs2008 + boost_1_35_0编译环境即可使用这个mongoclient.lib,boost_1_35_0从boost官网下载即可。编译boost分两步:
一:执行E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0\tools\jam\build_dist.bat二:将第一步生成的bjam.exe拷贝到E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0,然后执行:
cd E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0
bjam.exe link=static threading=multi variant=release runtime-link=static --without-python --toolset=msvc-9.0完成后即会生成很多lib库,比如libboost_program_options-vc90-mt-gd-1_35.lib,把这些lib 库文件(搜索lib关键字)全部拷贝到E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0 \boost_1_35_0\uselib目录(uselib目录是我自己建立的)接下来利用vs2008建立工程test,包含文件first.cpp,并做下设置:
1,工具-->选项-->项目和解决方案-->VC++ 目录
加上对应的包含文件:
E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\include\mongo
加上对应的库文件:
E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0\uselib
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\lib2,项目-->属性(Alt+F7)-->配置属性-->C/C++-->代码生成-->运行时库
选为多线程(/MT),即是静态的,不要用DLL。 编译执行,结果:
time:10.797s
insert finished
time:0.453s
query finished
time:0.094s
remove finished 这个过程我遇到很多问题,一一解决后,正确流程就是上面这样,也不知道遗漏了什么没叙述没有。 first.cpp文件内容:
// first.cpp#include#include "client/dbclient.h"#pragma comment(lib, "mongoclient.lib")
#pragma comment(lib, "wsock32.lib")using namespace std;int main( int argc, const char **argv ) {
int i;
clock_t start, finish;
string errmsg;
string table = "test.test";
int record = 100000;
mongo::DBClientConnection conn; // connect db server
if (!conn.connect(string("127.0.0.1:55555"), errmsg)) {
cout << "couldn't connect to server:" << errmsg << endl;
return -1;
}
// insert test data
start = clock();
for (i = 0; i < record; i ++) {
mongo::BSONObjBuilder query;
query << "user" << i << "pwd" << i << "age" << i;
query << "email" << i << "address" << i << "phone" << i;
conn.insert(table, query.obj());
}
finish = clock();
cout << "time:" << (double)(finish - start) / CLOCKS_PER_SEC << "s" << endl;
cout << "insert finished" << endl; // query test data
start = clock();
{
mongo::BSONObjBuilder query;
//query.append("user" , 1);
auto_ptr cursor = conn.query(table, query.obj());
while (cursor->more()) {
mongo::BSONObj obj = cursor->next();
//cout << obj.jsonString() << endl;
}
}
finish = clock();
cout << "time:" << (double)(finish - start) / CLOCKS_PER_SEC << "s" << endl;
cout << "query finished" << endl;
// remove test data
start = clock();
{
mongo::BSONObjBuilder query;
//query.append("user" , 1);
conn.remove(table, query.obj());
}
finish = clock();
cout << "time:" << (double)(finish - start) / CLOCKS_PER_SEC << "s" << endl;
cout << "remove finished" << endl; // waiting
cin >> errmsg;
return 0;
}
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\include
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\lib利用它们来写mongodb客户程序:
首先需要有boost,而mongodb-win32-i386-1.2.1.zip里提供的mongodb库文件
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\lib\mongoclient.lib
是用vs2008 + boost_1_35_0编译出来的,懒得重新编译mongodb,因此也对应的使用vs2008 + boost_1_35_0编译环境即可使用这个mongoclient.lib,boost_1_35_0从boost官网下载即可。编译boost分两步:
一:执行E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0\tools\jam\build_dist.bat二:将第一步生成的bjam.exe拷贝到E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0,然后执行:
cd E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0
bjam.exe link=static threading=multi variant=release runtime-link=static --without-python --toolset=msvc-9.0完成后即会生成很多lib库,比如libboost_program_options-vc90-mt-gd-1_35.lib,把这些lib 库文件(搜索lib关键字)全部拷贝到E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0 \boost_1_35_0\uselib目录(uselib目录是我自己建立的)接下来利用vs2008建立工程test,包含文件first.cpp,并做下设置:
1,工具-->选项-->项目和解决方案-->VC++ 目录
加上对应的包含文件:
E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\include\mongo
加上对应的库文件:
E:\lenkydatasource\mongodb\1.2.1\boost_1_35_0\boost_1_35_0\uselib
E:\lenkydatasource\mongodb\1.2.1\mongodb-win32-i386-1.2.1\lib2,项目-->属性(Alt+F7)-->配置属性-->C/C++-->代码生成-->运行时库
选为多线程(/MT),即是静态的,不要用DLL。 编译执行,结果:
time:10.797s
insert finished
time:0.453s
query finished
time:0.094s
remove finished 这个过程我遇到很多问题,一一解决后,正确流程就是上面这样,也不知道遗漏了什么没叙述没有。 first.cpp文件内容:
// first.cpp#include
#pragma comment(lib, "wsock32.lib")using namespace std;int main( int argc, const char **argv ) {
int i;
clock_t start, finish;
string errmsg;
string table = "test.test";
int record = 100000;
mongo::DBClientConnection conn; // connect db server
if (!conn.connect(string("127.0.0.1:55555"), errmsg)) {
cout << "couldn't connect to server:" << errmsg << endl;
return -1;
}
// insert test data
start = clock();
for (i = 0; i < record; i ++) {
mongo::BSONObjBuilder query;
query << "user" << i << "pwd" << i << "age" << i;
query << "email" << i << "address" << i << "phone" << i;
conn.insert(table, query.obj());
}
finish = clock();
cout << "time:" << (double)(finish - start) / CLOCKS_PER_SEC << "s" << endl;
cout << "insert finished" << endl; // query test data
start = clock();
{
mongo::BSONObjBuilder query;
//query.append("user" , 1);
auto_ptr
while (cursor->more()) {
mongo::BSONObj obj = cursor->next();
//cout << obj.jsonString() << endl;
}
}
finish = clock();
cout << "time:" << (double)(finish - start) / CLOCKS_PER_SEC << "s" << endl;
cout << "query finished" << endl;
// remove test data
start = clock();
{
mongo::BSONObjBuilder query;
//query.append("user" , 1);
conn.remove(table, query.obj());
}
finish = clock();
cout << "time:" << (double)(finish - start) / CLOCKS_PER_SEC << "s" << endl;
cout << "remove finished" << endl; // waiting
cin >> errmsg;
return 0;
}
C学习起步问题
C 语言从何起步? [跪求有精者指路]
起步天堂
为了防止驾驶员在行驶中或起步时,误挂倒档,所以变速器设有: A.倒档锁 B.倒档叉 C.倒档轴
为了防止驾驶员在行驶中或起步时,误挂倒档,所以变速器设有:A.倒档锁 B.倒档叉 C.倒档轴
我想学C语言,但是,我不知道要怎么起步,要先看书吗?看哪些书比较好?
怎样起步学英语
美国出租车起步价
心理学.从何起步~
如何坡上起步
请问BREAKING如何起步
如何起步学酒文化?
为什么要三挡起步啊!!!!
经商的的起步
跑跑卡丁车起步抢跑
网络公司应如何起步?
网络公司如何起步
想用jbuilder,怎么起步?
如何在保险行业起步。
深圳起步海运报价
需要多少钱才能起步?
起步停车的问题
软件开发如何起步
软件开发如何起步