這個估計是mongodb裡用的最多的了吧,mgo中使用find(query inte***ce{}),query引數一般傳入bson.m。下面給個例子:
m := bson.m,
"account": account,
"tonodetype": "cloud",
}session.db("db").c("collect").find(m).count()
這裡查詢時間戳內,賬號為account,節點型別為cloud的資料並統計個數。
聚合管道在mgo中為pipe(pipeline inte***ce{}) ,這個和bash中使用的管道很像,資料可以被層層處理。一般傳入的引數為bson.m。這個bson.m裡如果還有巢狀則還要使用bson.m(剛開始使用就被坑了一下)。比如這裡首先匹配節點型別和賬號,時間戳在一段時間內,然後根據名字分組統計數量,最後排序取最前面的三個。
//這個就可以傳入pipe
m := bson.m}},
}},},,}
//這裡就可以取到輸出的資料
var values result
session.db("db").c("collect").pipe(m).all(&values)
資料是一層一層過濾下來的。當然mongodb中的聚合命令不止這些,用法大同小異
如果要實現一些高階功能,mongodb的基本命令滿足不了你,可能就要使用這個了。mongodb中要實現mapreduce就要實現map函式和reduce函式,map函式呼叫emit將key和value傳給reduce函式處理。這裡給的例子首先計時間戳在哪個時間範圍內,然後累加這個值,js不是很精通,寫的不好請見諒。
m := new(mgo.mapreduce)
m.map = `function() else if((hour >= 12) && (hour <= 18))else if((hour >= 19) && (hour <= 23)) else
emit(this.account, {});}`
m.reduce = `function() `
m.scope = bson.m,
}var value timeresult
session.db("db").c("collect").find().mapreduce(m, &value)
這裡的map函式負責計算時間戳範圍,result是引入的外部變數。這裡就可以計算出這個賬號產生資料的時間範圍統計。
其實用多了以後就基本能熟練使用了,重要還是了解mogodb命令的使用。
關於 vi vim 的一些用法
這兩天閒一點,繼續寫起來。今天來寫一點自己在運用vi vim過程中的經驗和體會,以下的內容基本都是本人實際使用過的。今後如果用到了什麼新鮮玩意兒,再加進來。寫的比較簡單,都是追求自己能看懂就行,奉行拿來主義的恐怕要實際操作和查資料才能明白了。基本操作 簡單列舉下,不多說了 w q wq q!w!i ...
關於Linux 的一些用法
假設我們定義了乙個變數為 file dir1 dir2 dir3 my.file.txt 我們可以用 分別替換獲得不同的值 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my.file.txt 拿掉最後一條 及其左邊的字串 my.file.txt 拿掉第乙個 及其左邊的字串 file.t...
關於ListCtrl控制項的一些用法
本人從今天開始將陸續把自己在vc 中學到的點點滴滴記錄下來。最近正好在跟著導師做乙個軟體專案,要用到listctrl控制項。下面結合自己的程式設計經驗 其實我還是個菜鳥 介紹幾個listctrl控制項常用的方法。我選用的是報表形式 1 為listctrl 設定 線 m mylist.setexten...