mongodb用戶端編程

來源:互聯網
上載者:User

研究了大半天,終於可以在windows的vs2008通過C++編碼來實現串連mongodb伺服器,從而進行其它資料庫存取操作。

一、花這麼多時間原因是開始時不懂得這幾個東西scons,python,SpiderMonkey, boost與mongodb的關係,下面寫下個人理解。
windows下編碼mongodb用戶端需要自已先編譯產生一個mongoclient.lib,也即串連mongodb伺服器所需要的C++介面類庫。
1.scons
scons是一個Python寫的自動化構建工具,同linux的make工具功能相似。與之關聯的SConstruct檔案也即類似make工具的makefile檔案,
描述了編譯和連結的內容和方式。在這裡就是用scons這個工具來編譯產生mongoclient.lib的(而不是用vs)。
2.python
Python是一種物件導向、直譯式電腦程式設計語言。因為scons是用python寫的那就肯定要用到它的庫啦,所以在scons之前先裝python.
3.SpiderMonkey
一個用C語言實現的JavaScript指令碼引擎,mongodb的資料類型格式是bson,而bson是json的二進位形式的儲存格式,
json是JavaScript使用的資料類型。mongodb是支援javascript指令碼語言進行操作的,所以就需要一個JavaScript指令碼引擎了
也就是這個SpiderMonkey了。
4.boost
 一個很強大的C++庫,mongodb是用C++寫,使用到了這個庫,所以需要它。

二、現在說說怎麼在windows下產生mongoclient.lib
1下載安裝python.
http://www.python.org/getit/,或可以在別的地方下載python-2.7.3.msi
2下載安裝scons.(需要python,所以要先安裝python)
http://sourceforge.net/projects/scons/files/scons/2.2.0/,
並配置python指令碼路徑,將C:\Python27\Scripts添加到PATH中。
3下載boost,放在C:\boost中
http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.zip/download
4下載mongodb的C++ driver,比如解壓在E:\mongodb-mongo-xxx\
http://dl.mongodb.org/dl/cxx-driver/
  在其主目錄有個SConstruct檔案就是待會用scons編譯mongoclient.lib要用的,
5下載SpiderMonkey。
  這個連結是編程好的用於vs2010的https://github.com/dwight/vc2010_js,
  不過我用vs2008,貪方便先直接拿來用,之後寫了些簡單的串連mongodb伺服器和寫入、查詢操作也還能用。有空再編譯個vs2008版的。
  建一個與mongodb同級目錄js存放下載的檔案,比如E:\js\。因為那個SConstruct檔案裡r 尋找路徑是../js/
6東西下全了,可以編譯了。
 cmd命令列進入E:\mongodb-mongo-xxx\,
 輸入命令:scons mongoclient.lib

 稍等會,如果編譯成功就可以在E:\mongodb-mongo-xxx\目錄下見到mongoclient.lib檔案了。


三、在vs2008編寫用戶端

 1建立工程,加入代碼

#include "stdafx.h"#include <iostream>#include "dbclient.h"// g++ tutorial.cpp -lmongoclient -lboost_thread -lboost_filesystem -o tutorialusing namespace mongo;void printIfAge(DBClientConnection& c, int age) {auto_ptr<DBClientCursor> cursor = c.query("tutorial.persons", QUERY( "age" << age ).sort("name") );while( cursor->more() ) {BSONObj p = cursor->next();cout << p.getStringField("name") << endl;}}void run() {DBClientConnection c;c.connect("localhost:30000"); //"192.168.58.1");cout << "connected ok" << endl;BSONObj p = BSON( "name" << "Joe" << "age" << 33 );c.insert("tutorial.persons", p);p = BSON( "name" << "Jane" << "age" << 40 );c.insert("tutorial.persons", p);p = BSON( "name" << "Abe" << "age" << 33 );c.insert("tutorial.persons", p);p = BSON( "name" << "Samantha" << "age" << 21 << "city" << "Los Angeles" << "state" << "CA" );c.insert("tutorial.persons", p);c.ensureIndex("tutorial.persons", fromjson("{age:1}"));cout << "count:" << c.count("tutorial.persons") << endl;auto_ptr<DBClientCursor> cursor = c.query("tutorial.persons", BSONObj());while( cursor->more() ) {cout << cursor->next().toString() << endl;}cout << "\nprintifage:\n";printIfAge(c, 33);}int main() {try {run();}catch( DBException &e ) {cout << "caught " << e.what() << endl;}return 0;}

要把boost的目錄和mongodb的C++driver的client目錄包含進來,如:c:/boost;E:\mongodb-mongo-xxx\client

 還要增加這個附加依賴庫:ws2_32.lib mongoclient.lib(記得加路徑)
2開啟mongodb伺服器,port為30000
 再運行剛編譯的用戶端即可看到串連上了。
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.