談談一些關於mgo的用法

2021-09-16 22:20:00 字數 1296 閱讀 6344

這個估計是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...