MongoDB C++應用 簡單例子

來源:互聯網
上載者:User

假定你已經有了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,否則更新不會成功,因此可以看到My Code中專門複製了一個query2對象用於update, 而query_with_sort 可以用於一般的查詢(find)。

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

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

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

#include "mongo/client/dbclient.h"

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.