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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python js 效率_巧用 db.system.js 提升20% 开发效率

發布時間:2024/10/6 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python js 效率_巧用 db.system.js 提升20% 开发效率 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開門見山,20%是我造的,哈哈,為的就是讓各位mongoer能夠對db.system.js collection 引起注意。

這個也是在我最近瀏覽InfoQ 的時候,看到一篇關于MongoDB 文章

system.js

先來看下官文給出的解釋:

.system.js

The .system.js collection holds special JavaScript code for use in server side JavaScript. See Store a JavaScript Function on the Server for more information.

解釋很簡單,馬上就進入實操環節

db.system.js.save(

{

_id: "echoFunction",

value : function(x) { return x; }

}

)

但是并沒有任何效果,shell里表示,echoFunction undefined.

在查看 db.system.js 確實有一條記錄

> db.system.js.find({_id: 'echoFunction'}).pretty()

{

"_id" : "echoFunction",

"value" : {

"code" : "function (x) { return x; }"

}

}

繼續查看doc,原來還需要通過 loadServerScripts 函數 load 進數據字典,這個操作就有點像我們在linux 環境中 source ~/.bash_profile 一樣了。

執行一次,db.loadServerScripts() , 果然就可以使用我們自定義的函數了。

那問題來了,如何提升我們的工作效率呢?

在MongoDB 中,雖然有 $sum, $avg 等一系列的pipeline,但是,對于DBA也好,Developer 也罷,許多的報表、統計aggregation 并不能完全代勞,mapReduce 就是為了這個時候而上的,那每次都要去寫一個function 去 sum,去 avg 總顯得在反復造輪子,因此我們完全可以在這種情況下,在 db.system.js 中加入我們常用的統計函數,比如 sum, avg, max, min 等等。

這里我就給出自己常用的函數供大家參考:

SUM

db.system.js.save( { _id : "Sum" ,

value : function(key,values)

{

var total = 0;

for(var i = 0; i < values.length; i++)

total += values[i];

return total;

}});

AVERAGE

db.system.js.save( { _id : "Avg" ,

value : function(key,values)

{

var total = Sum(key,values);

var mean = total/values.length;

return mean;

}});

MAX

db.system.js.save( { _id : "Max" ,

value : function(key,values)

{

var maxValue=values[0];

for(var i=1;i

{

if(values[i]>maxValue)

{

maxValue=values[i];

}

}

returnmaxValue;

}});

MIN

db.system.js.save( { _id : "Min" ,

value : function(key,values)

{

var minValue=values[0];

for(var i=1;i

{

if(values[i]

{

minValue=values[i];

}

}

return minValue;

}});

VARIANCE

db.system.js.save( { _id : "Variance" ,

value : function(key,values)

{

var squared_Diff = 0;

var mean = Avg(key,values);

for(var i = 0; i < values.length; i++)

{

var deviation = values[i] - mean;

squared_Diff += deviation * deviation;

}

var variance = squared_Diff/(values.length);

return variance;

}});

STD DEVIATION

db.system.js.save( { _id : "Standard_Deviation"

, value : function(key,values)

{

var variance = Variance(key,values);

return Math.sqrt(variance);

}});

MapReduce

那么接下來我們就用Map-Reduce來結合之前的自定義聚合函數來做詳解。(這里權當各位大佬熟悉Map-Reduce了)

引入demo data

{ "_id" : ObjectId("4f7be0d3e37b457077c4b13e"), "_class" : "com.infosys.mongo.Sales", "orderId" : 1, "orderDate" : "26/03/2011",

"quantity" : 20, "salesAmt" : 200, "profit" : 150, "customerName" : "CUST1", "productCategory" : "IT", "productSubCategory" : "software",

"productName" : "Grad", "productId" : 1 }

{ "_id" : ObjectId("4f7be0d3e37b457077c4b13f"), "_class" : "com.infosys.mongo.Sales", "orderId" : 2, "orderDate" : "23/05/2011",

"quantity" : 30, "salesAmt" : 200, "profit" : 40, "customerName" : "CUST2", "productCategory" : "IT", "productSubCategory" : "hardware",

"productName" : "HIM", "productId" : 1 }

{ "_id" : ObjectId("4f7be0d3e37b457077c4b140"), "_class" : "com.infosys.mongo.Sales", "orderId" : 3, "orderDate" : "22/09/2011",

"quantity" : 40, "salesAmt" : 200, "profit" : 80, "customerName" : "CUST1", "productCategory" : "BT", "productSubCategory" : "services",

"productName" : "VOCI", "productId" : 2 }

{ "_id" : ObjectId("4f7be0d3e37b457077c4b141"), "_class" : "com.infosys.mongo.Sales", "orderId" : 4, "orderDate" : "21/10/2011",

"quantity" : 30, "salesAmt" : 200, "profit" : 20, "customerName" : "CUST3", "productCategory" : "BT", "productSubCategory" : "hardware",

"productName" : "CRUD", "productId" : 2 }

{ "_id" : ObjectId("4f7be0d3e37b457077c4b142"), "_class" : "com.infosys.mongo.Sales", "orderId" : 5, "orderDate" : "21/06/2011",

"quantity" : 50, "salesAmt" : 200, "profit" : 20, "customerName" : "CUST3", "productCategory" : "BT", "productSubCategory" : "hardware",

"productName" : "CRUD", "productId" : 1 }

創建聚合函數Sum

db.system.js.save({

_id : "Sum" ,

value: function(key,values) {

var total = 0;

for(var i = 0; i < values.length; i++)

total += values[i];

return total;

}

});

結合Sum 聚合函數執行Map-Reduce

db.runCommand(

{

mapreduce: "sales" ,

map: function() {

emit({

key0:this.productCategory,

key1:this.productSubCategory,

key2:this.productName

},

this.salesAmt

);

},

reduce: function(key, values) {

var result = Sum(key, values);

return result;

},

out: {inline: 1}

}

)

這里,就直接把結果輸出的stdout 了,如果需要可以指定collection,將我們的Map-Reduce結果存儲下來。

來看一下結果

{

"results" : [

{

"_id" : {

"key0" : "BT",

"key1" : "hardware",

"key2" : "CRUD"

},

"value" : 400

},

{

"_id" : {

"key0" : "BT",

"key1" : "services",

"key2" : "VOCI"

},

"value" : 200

},

{

"_id" : {

"key0" : "IT",

"key1" : "hardware",

"key2" : "HIM"

},

"value" : 200

},

{

"_id" : {

"key0" : "IT",

"key1" : "software",

"key2" : "Grad"

},

"value" : 200

}

],

"timeMillis" : 14,

"counts" : {

"input" : 5,

"emit" : 5,

"reduce" : 1,

"output" : 4

},

"ok" : 1

}

這里可以看到,我們的Sum 函數已經將emit 過后的 "productCategory" : "BT", "productSubCategory" : "hardware", "productName" : "CRUD" 這組數據的 salesAmt 累加了。

到這里,我們基本就可以實現一個自定義的Function + Map-Reduce 的強大組合了!

歡迎各位大神前來評論。

每周五,敬請期待,上海小胖[MiracleYoung] 獨更。

如果夏雨荷還在大明湖畔等著我的話,我就不更了。

總結

以上是生活随笔為你收集整理的python js 效率_巧用 db.system.js 提升20% 开发效率的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲一级一级 | 久草青青 | 免费看麻豆| 理论片在线观看视频 | 久久视频精品 | 中文字幕第三页 | v片在线看 | 久久精品无码中文字幕 | 亚洲成人基地 | 亚洲少妇一区二区 | 欧美日韩一区二区视频在线观看 | 91极品在线 | 欧美日韩首页 | 亚洲国产无码精品 | 日日操夜夜操天天操 | 东方av在线播放 | 国产女主播喷水视频在线观看 | 北京少妇xxxx做受 | 三级a级片 | 国产高清精品在线 | 欧美性久久久 | 久久av免费观看 | 亚洲精品久久一区二区三区777 | 好吊视频一二三区 | 日韩大片av | 少妇搡bbbb搡bbb搡打电话 | 男插女青青影院 | 日韩一级在线视频 | 亚洲精品自拍视频 | 中文字幕无码精品亚洲资源网久久 | 亚洲av无码久久忘忧草 | www五月天com| 亚洲精品成a人在线观看 | 欧美精品黑人猛交高潮 | 美日韩视频 | 中文字幕人妻一区二区三区在线视频 | 日韩成人免费在线视频 | 久久蜜桃av一区二区天堂 | 日韩欧美国产激情 | 拍摄av现场失控高潮数次 | 国产av日韩一区二区三区精品 | 久久伊人五月天 | 亚洲免费婷婷 | 日本美女黄色一级片 | h无码动漫在线观看 | aaa影院 | 悠悠色在线 | 茄子视频懂你更多在线观看 | 亚洲一区二区三区影院 | 国产精品一区二区三 | 欧美裸体网站 | 风韵少妇spa私密视频 | 日韩avxxx | 精品字幕| 国产a v一区二区三区 | japanese国产| 99精品国自产在线 | 国产精品又黄又爽又色无遮挡 | 日韩女优在线观看 | 天天爽夜夜爽夜夜爽精品视频 | 尤物视频在线观看 | 黑人巨大猛烈捣出白浆 | 国产日批视频 | 五月婷婷丁香综合 | 中文字幕二区 | 超污视频网站 | 蜜臀av无码精品人妻色欲 | www九色 | 久久丫精品国产亚洲av不卡 | 欧美成人精品在线视频 | 四虎国产精品永久免费观看视频 | 欧美日韩在线一区 | 国产精品毛片久久久久久久av | 欧洲精品无码一区二区 | 欧美三区在线观看 | 日韩国产欧美在线观看 | 久久婷香 | 四虎色网 | 2019亚洲男人天堂 | 自拍视频在线观看 | av一二三区 | 男女免费看 | 亚州欧美在线 | 91精品国产高清 | 黄色刺激视频 | 日韩一区二区高清 | 91一级视频 | 日韩性大片 | 久久久精品一区二区涩爱 | av特黄 | 欧美午夜久久 | 美女扒开尿口让男人爽 | 桃色在线视频 | 人人妻一区二区三区 | 美女被爆操网站 | 免费无码毛片一区二三区 | 在线高清观看免费观看 | 色www亚洲国产张柏芝 | 国产精品无套 |