MongoDB學(xué)習(xí)筆記之分組(group)使用示例
// 準(zhǔn)備測(cè)試數(shù)據(jù)
db.user.drop();
for(var i=10; i< 100; i++) {
db.user.insert({
name:"user" + i,
age : Math.floor(Math.random()*10)+ 20,
sex : Math.floor(Math.random()*3)%2 ==0 ? 'M' : 'F',
chinese : Math.floor(Math.random()*50)+50,
math : Math.floor(Math.random()*50)+50,
english : Math.floor(Math.random()*50)+50,
class : "C" + i%5
})
}
// group函數(shù)
// 按照class進(jìn)行分組,顯示每個(gè)class中的用戶姓名和性別
db.user.group({
key: {"class": true},
initial: {"person": []},
reduce: function(cur, prev) {
prev.person.push({name: cur.name, sex: cur.sex, age: cur.age});
}
});
// 對(duì)age>25的用戶,按照class進(jìn)行分組,顯示每個(gè)class中的用戶姓名和性別,并統(tǒng)計(jì)每組的人數(shù)
db.user.group({
key: {"class": true},
initial: {"person": []},
reduce: function(doc, out){
out.person.push({name: doc.name, sex: doc.sex, age: doc.age});
},
finalize: function(out){
out.count = out.person.length;
},
condition: {"age": {$gt: 25}}
})
// 分組計(jì)算每個(gè)class中,chinese最大值和最小值
db.user.group({
key: {"class": true},
initial: {"chinese_min": 0, "chinese_max":0 },
reduce: function(doc, out){
out.chinese_min = doc.chinese;
out.chinese_min = doc.chinese;
out.chinese_min = Math.min(out.chinese_min, doc.chinese);
out.chinese_max = Math.max(out.chinese_max, doc.chinese)
},
})
// 利用分組,計(jì)算每個(gè)總成績(jī)和成績(jī)平均值
db.user.group({
key: {"_id" : true},
initial: {name:"", total: 0, avg: 0},
reduce: function(doc, out){
out.name = doc.name;
out.total = doc.chinese + doc.math + doc.english;
out.avg = Math.floor(out.total / 3);
}
})
group參數(shù)選項(xiàng):
1.key: 這個(gè)就是分組的key
2.initial: 每組都分享一個(gè)初始化函數(shù),特別注意:是每一組initial函數(shù)。
3.reduce: 這個(gè)函數(shù)的第一個(gè)參數(shù)是當(dāng)前的文檔對(duì)象,第二個(gè)參數(shù)是上一次function操作的累計(jì)對(duì)象。有多少個(gè)文檔, $reduce就會(huì)調(diào)用多少次。
4.condition: 這個(gè)就是過濾條件。
5.finalize: 這是個(gè)函數(shù),每一組文檔執(zhí)行完后,多會(huì)觸發(fā)此方法。
相關(guān)文章
Pycharm連接MongoDB數(shù)據(jù)庫安裝教程詳解
這篇文章主要介紹了Pycharm連接MongoDB數(shù)據(jù)庫安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Spring Boot中使用MongoDB數(shù)據(jù)庫的方法
MongoDB是一個(gè)高性能,開源,無模式的,基于分布式文件存儲(chǔ)的文檔型數(shù)據(jù)庫,由C++語言編寫,其名稱來源取自“humongous”,是一種開源的文檔數(shù)據(jù)庫──NoSql數(shù)據(jù)庫的一種。這篇文章主要介紹了Spring Boot中使用MongoDB數(shù)據(jù)庫的方法,需要的朋友可以參考下2017-12-12
mongodb官方的golang驅(qū)動(dòng)基礎(chǔ)使用教程分享
這篇文章主要給大家介紹了關(guān)于mongodb官方的golang驅(qū)動(dòng)基礎(chǔ)使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
mongodb 數(shù)據(jù)生成Insert 語句的示例代碼
這篇文章主要介紹了mongodb 數(shù)據(jù)生成Insert 語句的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
SpringBoot?整合mongoDB并自定義連接池的示例代碼
這篇文章主要介紹了SpringBoot?整合mongoDB并自定義連接池?,整合mongoDB的目的就是想用它給我們提供的mongoTemplate,它可以很容易的操作mongoDB數(shù)據(jù)庫,對(duì)整合過程及實(shí)例代碼感興趣的朋友跟隨小編一起看看吧2022-02-02
Centos 7.2中MongoDB數(shù)據(jù)庫的安裝與卸載教程
這篇文章主要給大家介紹了關(guān)于在Centos 7.2中MongoDB數(shù)據(jù)庫的安裝與卸載的相關(guān)資料,文中還給大家總結(jié)了在過程中可能會(huì)遇到的一些問題的解決方法,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03
Mongodb使用$<identifier>過濾更新數(shù)組元素的示例代碼
帶有過濾器的位置操作符$<identifier>定義數(shù)組中數(shù)據(jù)更新時(shí),只符合identifier定義條件的元素才可以更新,本文給大家介紹了Mongodb使用$<identifier>過濾更新數(shù)組元素的操作方法,很值得探討和學(xué)習(xí),需要的朋友可以參考下2024-06-06

