MongDB shell 指令碼學習

來源:互聯網
上載者:User

   剛開始接觸MongDB  shell。這裡記錄一下學習的過程。

  在控制台開啟shell .

 linux 環境下:/usr/local/mongo/bin/mongo  

window 環境下:D:\MongoDB\mongodb-win32-i386-2.0.6\bin>mongo


基礎部分可以參考:http://www.cnblogs.com/anan/archive/2012/06/15/2550553.html


首先建立一個js function

function query() {print("開始執行--------------");//查詢一個表video_encodevar encode_coll=db.video_encode.find({status:{"$lt":10}});print(encode_coll.count());//列印個數//迴圈變數while(encode_coll.hasNext()){var v=encode_coll.next();print(v.name);//列印屬性}print("結束執行--------------");}

直接調用 query() 方法執行。  如下圖



這個函數主要用於 根據條件從一個表中查詢 記錄 ,然後將記錄  迴圈遍曆 列印。

備忘剛開始學習的時候遇到這樣一個疑問。

在獲得一個集合我怎麼 知道如何操作這個集合  例如 var encode_coll=db.video_encode.find();

如何知道這個對象。

其實 你可以通過遍曆對象 知道他的內部結構。

例如 :

for(var param in encode_coll){

print(param);


你將看到如圖 這個是返回遊標的屬性:


很顯然這個是有mongDB 內部對db.find() 返回對象的封裝,以便我們更好的操作。

下面來做一個樣本:

我有兩張表:video_uplaod(uploadId,size) , transcode_job (id,uploadId,act)

我要統計act ="CLOUD" 所有的檔案的大小。

思路先根據 act ="CLOUD"  從表transcode_job 中查出所有的uploadIds (Array).

在根據uploadIds 從表video_upload 統計所有的大小。

如圖:




//統計轉碼失敗率

 
function fun_encode_fail(){//統計時間段,轉碼失敗率var b_time=new Date(2012,05,01); //2012-06-01var e_time=new Date(2012,06,01);//2012-02-01var temp_time=new Date(2012,05,01);//臨時時間b_time.setDate(b_time.getDate()+7); //添加七天//迴圈添加日期    var weeks=0;//統計指定時間類,轉碼失敗率function failRate(startTime,endTime) {print("startTime:"+startTime+" endTime:"+endTime);var count=0;//轉碼個數var retryTimes=0;//失敗次數var fail_rate=0;//失敗率//query 是查詢條件,是json 對象var query={"status":{"$in":[20,30,70,-100,-101,-200]},"createTime":{"$gt":startTime,"$lte":endTime}};var cusor_encode=db.video_encode.find(query);var cusor_history=db.video_encode_history.find(query);//迴圈cusor_encodewhile(cusor_encode.hasNext()){  var video=cusor_encode.next();  if(video.retryTimes>0){  retryTimes+=video.retryTimes;  }  count++;}//迴圈cusor_historywhile(cusor_history.hasNext()){  var video=cusor_history.next();  if(video.retryTimes>0){  retryTimes+=video.retryTimes;  }  count++;}   fail_rate=count+retryTimes==0?0:retryTimes/(count+retryTimes);print("轉碼數量:"+count);print("失敗次數:"+retryTimes);print("失敗率:"+fail_rate);var fail_rate_json={"week":weeks,"startTime":startTime,"endTime":endTime,"transcodeNums":count,"failTimes":retryTimes,"failRate":fail_rate};db.fail_rate_info.insert(fail_rate_json);}//初始化表fail_rate_infodb.fail_rate_info.remove();while(b_time<e_time){print("第"+(++weeks)+"周");failRate(temp_time.getTime(),b_time.getTime()); //函數需要提前聲明temp_time.setDate(temp_time.getDate()+7);b_time.setDate(b_time.getDate()+7);}}
相關文章

聯繫我們

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