天天看點

高可用的MongoDB叢集-實戰篇1.概述2.基本操作3.CRUD4.MapReduce5.總結6.結束語

  最近有同學和網友私信我,問我mongodb方面的問題;這裡我整理一篇部落格來贅述下mongodb供大家學習參考,部落格的目錄内容如下:

基本操作

crud

mapreduce

  常用的 shell 指令如下所示:

檢視集合基本資訊,内容如下所示:

  在叢集中,我們增加一個 friends 庫,指令如下所示:

在庫建立後,我們在該庫下建立一個user分片,指令如下:

  在mongodb中,save和insert都能達到新增的效果。但是這兩者是有差別的,在save函數中,如果原來的對象不存在,那他們都可以向collection裡插入資料;如果已經存在,save會調用update更新裡面的記錄,而insert則會忽略操作。

  另外,在insert中可以一次性插叙一個清單,而不用周遊,效率高,save則需要周遊清單,一個個插入,下面我們可以看下兩個函數的原型,通過函數原型我們可以看出,對于遠端調用來說,是一次性将整個清單post過來讓mongodb去處理,效率會高些。

  save函數原型如下所示:

高可用的MongoDB叢集-實戰篇1.概述2.基本操作3.CRUD4.MapReduce5.總結6.結束語

  insert函數原型(部分代碼)如下所示:

高可用的MongoDB叢集-實戰篇1.概述2.基本操作3.CRUD4.MapReduce5.總結6.結束語

  預設每頁顯示20條記錄,當顯示不下的情況下,可以用it疊代指令查詢下一頁資料。注意:鍵入it指令不能帶“;” 但是你可以設定每頁顯示資料的大小,用dbquery.shellbatchsize= 50;這樣每頁就顯示50條記錄了。

and

  當然name也可以用true或false,當用ture的情況下和name:1效果一樣,如果用false就是排除name,顯示name以外的列資訊。

  可用于分頁,limit是pagesize,skip是第幾頁*pagesize。

  建立索引,并指定主鍵字段,指令内容如下所示:

  update指令格式,如下所示:

 參數說明: criteria:

  查詢條件 objnew:update對象和一些更新操作符

  upsert:如果不存在update的記錄,是否插入objnew這個新的文檔,true為插入,預設為false,不插入。

  multi:預設是false,隻更新找到的第一條記錄。如果為true,把按條件查詢出來的記錄全部更新。

  下面給出一個示例,更新id為 1 中 price 的值,内容如下所示:

  mongodb中的 mapreduce 是編寫javascript腳本,然後由mongodb去解析執行對應的腳本,下面給出 java api 操作mr。代碼如下所示:

  mongdbmanager類,用來初始化mongodb:

mongodbfactory類,用來封裝操作業務代碼,具體内容如下所示:

logineramountmr類,這是一個統計登入使用者數的mapreduce計算類,代碼如下:

  在計算 mongodb 的mapreduce計算的時候,拼接javascript字元串時需要謹慎小心,很容易出錯,上面給出的代碼隻是一部分代碼,供參考學習使用;另外,若是要做mapreduce任務計算,推薦使用hadoop的mapreduce計算架構,mongodb的mapreduce架構這裡僅做介紹學習了解。

  這篇部落格就和大家分享到這裡,若是大家在研究學習的過程當中有什麼問題,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉!