1. 程式人生 > >MongoDB C++應用 簡單例子

MongoDB C++應用 簡單例子

假定你已經有了MongoDB server,並且工作在Ubuntu上,安裝了GCC,下面的C++程式可以幫助你快速進入能夠使用MongoDB的狀態。

 

#include <cstdlib>
#include <mongo/client/connpool.h>
using namespace std;
using namespace mongo;

void SaveStatus(mongo::DBClientBase& session, string const& display_id, string const& status)
{ BSONObjBuilder condition; condition.append("display_id", mongo::OID(display_id)); BSONObjBuilder status_field; status_field.append("status", status); BSONObjBuilder data; data.append("$set", status_field.obj()); session.update("mydb.mycoll", mongo::Query(condition.obj()), data.obj()); } /* * */
int main(int argc, char** argv) { mongo::ScopedDbConnection con("localhost", 5000);//timeout is 5000 mongo::DBClientBase& session = con.conn(); BSONArrayBuilder display_ids; display_ids.append(mongo::OID("5061f915e4b045bab5e0c957")); BSONObjBuilder in_condition; in_condition.append("$in"
, display_ids.arr()); BSONObjBuilder message_condition; message_condition.append("display_id", in_condition.obj()); message_condition.append("status", "sending"); BSONObjBuilder sortBuilder; sortBuilder.append("_id", 1); mongo::Query query(message_condition.obj()); mongo::Query query2(query); mongo::Query query_with_sort(query.sort(sortBuilder.obj())); BSONObjBuilder update_field; update_field.append("status", "waiting"); BSONObjBuilder set_field; set_field.append("$set", update_field.obj()); session.update("mydb.mycoll", query2, set_field.obj(), false, true); con.done(); return 0; }

 

 

提示:

1.SaveStatus函式內部演示了簡單的設定某個欄位值的用法。

2.main函式中演示了更加複雜的用法,用$in作為update語句的查詢條件。

3.最後的con.done()函式呼叫是必須的,因為連線必須回到池中。

4.session.update的查詢條件不能帶sort,否則更新不會成功,因此可以看到我的程式碼中專門複製了一個query2物件用於update, 而query_with_sort 可以用於一般的查詢(find)。

5.BSONObject的obj方法只能被呼叫一次,第二次程式就會crash。

6.mongo::OID用來將字串轉換成OID物件,也就是常見的_id的值

7.有時候當碰到編譯錯誤的時候,可以試一下這個標頭檔案:

 

#include "mongo/client/dbclient.h"



再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed