日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数分组学通MongoDB——第三天 细说高级操作

發布時間:2023/12/2 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数分组学通MongoDB——第三天 细说高级操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

改章節個人在廣東喝咖啡的時候突然想到的...明天就有想寫幾篇關于函數分組的文章,所以回家到后之就奮筆疾書的寫出來發布了

????明天跟大家分享一下mongodb中比擬好玩的識知,要主括包:聚合,標游。

????一: 聚合

? ? ? 見常的聚合作操跟sql server一樣,有:count,distinct,group,mapReduce。

????<1> count

? ? ? ? count是最單簡,最易容,也是最經常使用的聚合工具,它的用使跟我們C#里頭的count用使簡直樣一模一。

????

?

????<2> distinct

? ? ? ?這個作操信相大家也是非常熟習的,指定了誰,誰就不能重復,直接上圖。

????

?

????<3> group

? ? 在mongodb里頭做group作操有點小龐雜,不過大家對sql server里頭的group比擬熟習的話還是一眼

????能看的明確的,其實group作操本質上形成了一種“k-v”模型,就像C#中的Dictionary,好,有了這類維思,

????我們來看看如何用使group。

? ? 面下舉的例子就是按照age行進group作操,value為對應age的姓名。面下對這些數參紹介一下:

? ? ? ?key: ?這個就是分組的key,我們這里是對春秋分組。

? ? ? ?initial: 每組都分享一個”初始化函數“,特別注意:是每一組,比如這個的age=20的value的list分享一個

????initial函數,age=22一樣也分享一個initial函數。

? ? ? ?$reduce: 這個函數的第一個數參是前當的文檔對象,第二個數參是上一次function作操的累計對象,第一次

????為initial中的{”perosn“:[]}。有多少個文檔, $reduce就會調用多少次。

????

? ?看到面下的結果,是否是有點感到,我們通過age看查到了應相的name職員,不過偶然我們可能有如下的求要:

? ? ?①:想過濾掉age>25一些職員。

? ? ?②:偶然person組數里頭的職員太多,我想加上一個count屬性明標一下。

?針對面下的需求,在group里頭還是很好辦到的,因為group有這么兩個可選數參: condition 和 finalize。

? ? ?condition: ?這個就是過濾件條。

? ? ?finalize:這是個函數,每一組文檔執行完后,多會觸發此方法,那么在每組合集里頭加上count也就是它的活了。

????

每日一道理
心是一棵樹,愛與希望的根須扎在土里,智慧與情感的枝葉招展在藍天下。無論是歲月的風雨撲面而來,還是滾滾塵埃遮蔽了翠葉青枝,它總是靜默地矗立在那里等待,并接受一切來臨,既不倨傲,也不卑微。
  心是一棵樹,一個個故事被年輪攜載;一回回驛動與飛鳥相約;一次次碰撞使它綿密柔韌;一幕幕經歷造就了它博廣的胸懷。心是一棵樹,獨木不成林。因此,樹與樹既獨立又相聯,心與心既相異又相親。

?

????<4> mapReduce

? ? ? ? 這玩意算是聚合函數中最龐雜的了,不過龐雜也好,越龐雜就越活靈。

? mapReduce實際上是一種編程模型,用在分布式計算中,其中有一個“map”函數,一個”reduce“函數。

? ?① map:

? ? ? ? ? 這個稱為射映函數,里頭會調用emit(key,value),合集會按照你指定的key行進射映分組。

? ?② reduce:

? ? ? ? ?這個稱為簡化函數,會對map分組后的數據行進分組簡化,注意:在reduce(key,value)中的key就是

? ? ? emit中的key,vlaue為emit分組后的emit(value)的合集,這里也就是很多{"count":1}的組數。

? ?③ mapReduce:

? ? ? ? ? 這個就是最后執行的函數了,數參為map,reduce和一些可選數參。體具看圖可知:

????

?

????從圖中我們可以看到如下信息:

? ? ? ?result: "放存的合集名“;

? ? ? ?input:傳入文檔的個數。

? ? ? ?emit:此函數被調用的數次。

? ? ? ?reduce:此函數被調用的數次。

? ? ? ?output:最后返回文檔的個數。

????最后我們看一下“collecton”合集里頭按姓名分組的情況。

????

?

????二:標游

? ? mongodb里頭的標游有點相似我們說的C#里頭延遲執行,比如:

? ? ? var list=db.person.find();

? ? 針對這樣的作操,list其實并沒有取獲到person中的文檔,而是明申一個“查詢結構”,等我們要需的時候通過

????for或者next()一次性載加過去,然后讓標游逐行讀取,當我們枚舉完了后之,標游毀銷,后之我們在通過list取獲時,

????發明沒有數據返回了。

????

?

????當然我們的“查詢造構”還可以弄的龐雜點,比如分頁,排序都可以加進去。

?var single=db.person.find().sort({"name",1}).skip(2).limit(2);

????那么這樣的“查詢造構”可以在我們要需執行的時候執行,大大提高了不必要的花消。

????

文章結束給大家分享下程序員的一些笑話語錄: 看新聞說中國輸入法全球第一!領先了又如何?西方文字根本不需要輸入法。一點可比性都沒有。

轉載于:https://www.cnblogs.com/jiangu66/archive/2013/05/01/3053009.html

總結

以上是生活随笔為你收集整理的函数分组学通MongoDB——第三天 细说高级操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。