1, 連線類
dbclientconnection(bool _autoreconnect=false, dbclientreplicaset* cp=0, double so_timeout=0)
引數:
_autoreconnect 自動重連
cp 副本集使用引數,可以不用關心
so_timeout 超時時間 單位 秒
2,連線函式
virtual
bool connect(const
char * hostname, string& errmsg)
引數:
hostname 主機名 ip:埠 預設埠 27017
errmsg 錯誤資訊 傳出
返回值:
false 代表失敗
true 代表成功
dbclientconnection 繼承與 dbclientbase ,該類內部包含增刪改查四個介面
進行增刪改查操作
通過api刪除文件
刪除文件
virtual void remove( const string &ns , query q , bool justone = 0 );
○ ns 集合名,填法 庫名.集合名
○ q 刪除條件 query 是乙個類
○ justone 是否刪除一條,預設false
class query
query(const bsonobj& b) : obj(b)
query(const string &json);
query(const char * json);
增加文件
#include "mongo/client/dbclient.h"
#include "mongo/bson/bsonobj.h"
#include "mongo/client/dbclientinte***ce.h"
#include
#include
#include
#include
#include "mongo/bson/bsonelement.h"
#include "mongo/bson/stringdata.h"
#include "mongo/bson/util/atomic_int.h"
#include "mongo/bson/util/builder.h"
#include
#include
//命令空間
using
namespace mongo;
using
namespace
std;
#define remove 0
#define insert 1
int main(int argc, char *argv)
#if remove
//刪除資料
//virtual void remove( const string &ns , query q , bool justone = 0 );
query q("");
//引數一:
conn.remove("songli.songli", q, false);
#endif // remove
#if insert
//插入資料
//virtual void insert( const string &ns , bsonobj obj , int flags=0);
bsonobjbuilder builder;
conn.insert("songli.songli", builder.obj());
bsonobjbuilder b;
b << "id"
<< 6
<< "name"
<< "王盼盼"
<< "age"
<< 23;
conn.insert("songli.songli", b.obj());
//virtual void insert( const string &ns , bsonobj obj , int flags=0);
conn.insert("songli.songli", bson("id"
<< 9
<< "name"
<< "巍盼盼"
<< "age"
<< "23"));
// query q("");
conn.insert( "songli.songli", q.obj);
#endif // insert
查詢語句
virtual bsonobj findone(const string &ns, const query& query, const bsonobj *fieldstoreturn = 0, int queryoptions = 0);
//query find("db.songli.find()");
//bsonobj obj = conn.findone("songli.songli", find.obj);
//cout << obj.numstr(1) << endl;
printf("connection ok\n");
return
0;}
修改文件
void update( const string &ns,
query query,
bsonobj obj,
bool upsert = false, bool multi = false );
○ ns 庫名.集合名
○ query 查詢條件
○ obj 要修改的內容
實現查詢文件
virtual auto_ptr query(const string &ns, query query=query(), int ntoreturn = 0, int ntoskip = 0,
const bsonobj *fieldstoreturn = 0, int queryoptions = 0 , int batchsize = 0 )
○ ns 庫名.集合名
○ query 查詢條件
○ ntoreturn 返回記錄數
○ ntoskip 跳過記錄數
○ fieldstoreturn 返回的字段
○ queryoptions 查詢選項
○ batchsize 批量大小
auto_ptr auto_ptr是智慧型指標,自動釋放dbclientcursor記憶體區域
關注 dbclientcursor 類
可以先呼叫more 判斷是否有next ,得到bsonobj next(); 物件
問題的核心就是如何解析 bsonobj
解析 bsonobj的方式 getfiled 獲得 bsonelement物件 ,這個物件各種轉換函式得到具體的value
可以先用hasfield判斷一下字段是否存在
//g++ -o testmongo testmongo.cpp -lmongoclient -lboost_thread -lboost_filesystem -lboost_program_options -l/home/itcast/driver/boost/lib -l/home/itcast/driver/mongo/lib -i/home/itcast/driver/mongo/include -i/home/itcast/driver/boost/include
#include
#include "mongo/client/dbclient.h"
char dbhost[20]="localhost";
using
namespace mongo;
using
namespace
std;
void printifage(dbclientconnection& c, int age)
} void run() "));
cout
<< "count:"
<< c.count("tutorial.persons") << endl; /**< 顯示person表中的資料數目 */
auto_ptr
cursor = c.query("tutorial.persons", bsonobj());
while( cursor->more() )
cout
<< "\nprintifage:\n";
printifage(c, 33);
} int main(int argc,char *argv)
else
try
catch( dbexception &e )
return
0;
}
PHP 操作mongodb api大部分方法
php mongodb 全部curd操作 author xiaojiang date 2014 10 27 檢視 mongo類版本 1.30 以後版本使用 mongoclient mongo version 連線 m new mongo mongodb localhost 連線多台 m new mo...
程式設計,還是程式設計
喜歡程式設計,雖然水平一般,但還是執著地學習與程式設計有關的知識。中間因為工作關係與程式設計遠離了一段時間,現在又重拾起來,細想起來還是因為喜歡吧。喜歡程式軟體的思想和原理,喜歡程式 的魅力和成就感。程式設計軟體的思想是最值得學習的,一直認為思想決定行動,思想改變世界。每種軟體的流行和受人追捧,無不...
少兒程式設計程式設計
機械人比賽,聽上去讓人有一種高大上的科技感,沒錯,在大多數人眼裡,玩機械人那是科學家做的事情,不過隨著機械人教育的普及,越來越多的孩子也能夠駕馭這高大上的機械人。格物斯坦小坦克告訴你原因,這是歸結於孩子對於程式設計課程的學習,學會對機械人進行程式設計了,自然就能玩轉機械人啦。參加機械人比賽的意義遠遠...