国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

mongodb聚合函數

來源:懂視網 責編:小采 時間:2020-11-09 16:07:45
文檔

mongodb聚合函數

mongodb聚合函數:mongodb聚合函數 1.count 這個函數很好理解,和其他數據庫一樣,就是做一個count操作 select count(*) from tab1 =db.tab1.count() 以上例子很好理解,但是如果在操作中有skip,limit這種操作的話,那么count會忽略掉這些操作,必須加入一個true參
推薦度:
導讀mongodb聚合函數:mongodb聚合函數 1.count 這個函數很好理解,和其他數據庫一樣,就是做一個count操作 select count(*) from tab1 =db.tab1.count() 以上例子很好理解,但是如果在操作中有skip,limit這種操作的話,那么count會忽略掉這些操作,必須加入一個true參

mongodb聚合函數 1.count 這個函數很好理解,和其他數據庫一樣,就是做一個count操作 select count(*) from tab1 =db.tab1.count() 以上例子很好理解,但是如果在操作中有skip,limit這種操作的話,那么count會忽略掉這些操作,必須加入一個true參數 比如:d

mongodb聚合函數

1.count

這個函數很好理解,和其他數據庫一樣,就是做一個count操作

select count(*) from tab1 =db.tab1.count()

以上例子很好理解,但是如果在操作中有skip,limit這種操作的話,那么count會忽略掉這些操作,必須加入一個true參數

比如:db.tab1.find().skip(1),limit(2).count()和db.tab1.find().count()得出的結果是一樣的

必須修改為db.tab1.find().skip(1).limit(2).count(true)

2.distinct

去重函數,這個也應該很熟悉,各種關系數據庫都有

具體操作:db.runCommand({"distinct":"collection","key":"xxxx"})=db.collections.distinct("xxxx");

3.group

select a,b,sum(c) csum from coll where active=1 group by a,b

db.coll.group( {key: { a:true, b:true },

cond: { active:1 },

reduce:function(obj,prev){ prev.csum += obj.c; },

initial: { csum: 0 }

});

參數解釋:

Key:group字段

Reduce:聚合函數,典型的有sum和count操作,包含兩個參數,當前遍歷對象以及聚合計數器

Initial:初始化計數器值

Cond:查詢條件篩選選項,如果是空,那么默認對當前collection的所有行操作

Group不能在sharding中使用,結果輸出不能多于10000個keys

舉例:

> db.mtb1.find()

{ "_id" : ObjectId("4fb4be52aa814943b788095c"), "name" : "aaa", "score" : 77 }

{ "_id" : ObjectId("4fb4be5caa814943b788095d"), "name" : "bbb", "score" : 79 }

{ "_id" : ObjectId("4fb4be61aa814943b788095e"), "name" : "ccc", "score" : 79 }

{ "_id" : ObjectId("4fb4be69aa814943b788095f"), "name" : "ddd", "score" : 79 }

{ "_id" : ObjectId("4fb4be74aa814943b7880960"), "name" : "eee", "score" : 100 }

{ "_id" : ObjectId("4fb4be7aaa814943b7880961"), "name" : "fff", "score" : 100 }

{ "_id" : ObjectId("4fb4be82aa814943b7880962"), "name" : "ggg", "score" : 100 }

{ "_id" : ObjectId("4fb4be9eaa814943b7880963"), "name" : "hhh", "score" : 200}

> db.mtb1.group(

... {key:{score:true},

... reduce:function(obj,prev){prev.count++;},

... initial:{count:0}

... });

[

{

"score" : 77,

"count" : 1

},

{

"score" : 79,

"count" : 3

},

{

"score" : 100,

"count" : 3

},

{

"score" : 200,

"count" : 1

}

]

一個簡單的例子,應該很明白了。其實這里group還是建立在reduce上面

4.map/reduce

這個工具的功能可以實現以上三種任何一種,它是分兩步完成,先做map,再reduce,map首先對數據進行分解映射,map執行完,緊接著會進行reduce,map后會的到key-values,像{key:[value1,value2,value3...]},然后通過reduce處理后得到key-value,也就是單一的值。

語法:

db.runCommand(

{ mapreduce : ,

map : ,

reduce :

[, query : ]

[, sort : ]

[, limit : ]

[, out : ]

[, keeptemp: ]

[, finalize : ]

[, scope : ]

[, verbose : true]

}

);

query是很常用的,它用來在map階段過濾查詢條件的以限定MapReduce操作的記錄范圍,sort和limit集合query使用。

out指定輸出結果的collections名稱

Keeptemp 布爾型,默認是false,如果是true那么生成的collection是永久存在的,如果是false,那么在客戶端連接關閉后,會自動刪除生成的collection

Finalize一般用來計算平均數,裁剪數組,清除多余信息

query是很常用的,它用來在map階段過濾查詢條件的以限定MapReduce操作的記錄范圍,sort和limit集合query使用。

out指定輸出結果的collections名稱

Keeptemp 布爾型,默認是false,如果是true那么生成的collection是永久存在的,如果是false,那么在客戶端連接關閉后,會自動刪除生成的collection

Finalize一般用來計算平均數,裁剪數組,清除多余信息

{ result : ,

counts : {

input : ,

emit : ,

output :

} ,

timeMillis : ,

ok : <1_if_ok>,

[, err : ]

}

result:儲存結果的collection的名字

input:滿足條件的數據行數

emit:emit調用次數,也就是所有集合中的數據總量

ouput:返回結果條數

timeMillis:執行時間,毫秒為單位

ok:是否成功,成功為1

err:如果失敗,這里可以有失敗原因

給出官方文檔的一個例子:

$ ./mongo

> db.things.insert( { _id : 1, tags : ['dog', 'cat'] } );

> db.things.insert( { _id : 2, tags : ['cat'] } );

> db.things.insert( { _id : 3, tags : ['mouse', 'cat', 'dog'] } );

> db.things.insert( { _id : 4, tags : [] } );

> // map function

> m = function(){

... this.tags.forEach(

... function(z){

... emit( z , { count : 1 } );

... }

... );

...};

> // reduce function

> r = function( key , values ){

... var total = 0;

... for ( var i=0; i

... total += values[i].count;

... return { count : total };

...};

> res = db.things.mapReduce(m,r);

> res

{"timeMillis.emit" : 9 , "result" : "mr.things.1254430454.3" ,

"numObjects" : 4 , "timeMillis" : 9 , "errmsg" : "" , "ok" : 0}

> db[res.result].find()

{"_id" : "cat" , "value" : {"count" : 3}}

{"_id" : "dog" , "value" : {"count" : 2}}

{"_id" : "mouse" , "value" : {"count" : 1}}

> db[res.result].drop()

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

mongodb聚合函數

mongodb聚合函數:mongodb聚合函數 1.count 這個函數很好理解,和其他數據庫一樣,就是做一個count操作 select count(*) from tab1 =db.tab1.count() 以上例子很好理解,但是如果在操作中有skip,limit這種操作的話,那么count會忽略掉這些操作,必須加入一個true參
推薦度:
標簽: 1. 聚合 函數
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

Top
主站蜘蛛池模板: 久久精品综合国产二区 | 青青热久久国产久精品 | 国产视频欧美 | 国产一区二区三区久久精品 | 亚洲黄色高清 | 国产激情一区二区三区成人91 | 精品一区二区在线 | 日本aⅴ精品一区二区三区久久 | 国产成人久久精品亚洲小说 | 在线观看国产亚洲 | 久久国产精品成人免费古装 | 国产第一页在线视频 | 欧美韩日 | 国产精品亚洲高清一区二区 | 天天躁日日躁狠狠躁中文字幕老牛 | 欧美日韩亚洲一区二区三区 | 欧美亚洲综合另类在线观看 | 欧美精品aaa久久久影院 | 精品国产高清自在线一区二区三区 | 成人一级片在线观看 | 亚洲视频一区二区 | 在线播放一区 | 中文字幕第四页 | 国产又黄又a又潮娇喘视频 国产淫视频 | 日韩欧美一区二区三区免费看 | 日本午夜在线观看 | 97国产精品欧美一区二区三区 | 亚洲欧美专区 | 国偷自产一区二区免费视频 | 国产精品…在线观看 | 一边摸一边爽一边叫床免费视频 | 亚洲国产成人久久综合碰碰动漫3d | 欧美另类日韩中文色综合 | 全黄网站 | 日韩欧美一区二区三区在线视频 | 自拍偷拍 欧美日韩 | 国产一级α片 | 亚洲高清色| 国产精品视频不卡 | 国产三级在线 | 天天操夜夜做 |