亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

mongodb eval 執行服務器端腳本

2020-03-14 13:21:54
字體:
來源:轉載
供稿:網友
在MongoDB的服務器端可以通過db.eval函數來執行javascript腳本,如我們可以定義一個javascript函數,然后通過db.eval在服務器端來運行!我們前面其實也接觸過在服務器段運行一個預定義的javascript腳本的情況,如在$where查詢,執行mapreduce任務等。
 

在服務器端可以通過db.eval函數來執行javascript腳本,也可以把javascript腳本保存在數據庫中,然后在別的數據庫命令中調用.

一、db.eval 執行服務器端腳本

利用db.eval函數可以在MongoDB服務器端執行javascript腳本.這個函數先將給定的javascript字符串傳遞給MongoDB服務器,在服務器上執行,然后返回結果.
db.eval可以用來模擬多文檔事務:db.eval鎖住數據庫,然后執行javascript,再解鎖.雖然沒有內置的回滾機制,但這能確保一系列操作按照指定的數序發生.
發送代碼有兩種方式,封裝一個函數或者不封裝,如:

 

復制代碼代碼如下:

db.eval("return 'refactor';")
db.eval("function(){return 'refactor';}")

 

只有傳遞參數的時候,才必須要封裝成一個函數.參數通過db.eval的第二個參數傳遞,要寫成一個數組的形式.
如:

 

復制代碼代碼如下:

db.eval("function(name){return 'hello,'+name;}",['refactor'])

 

若db.eval的表達式要是復雜的話,調試的辦法是將調試信息寫進數據庫的日志中
如:

 

復制代碼代碼如下:

db.eval("print('hello refactor')")

 

這樣在日志里就能找到hello refactor

二、存儲javascript

每個MongoDB的數據庫中都有個特殊的集合:system.js,用來存放javascript變量.這些變量可以在任何MongoDB的javascript上下文中調用,包括"$where"子句,db.eval調用,MapReduce作業.用insert可以將變量存在system.js中
如:

 

復制代碼代碼如下:

db.system.js.insert({"_id":"x","value":1})
db.system.js.insert({"_id":"y","value":2})
db.system.js.insert({"_id":"z","value":3})

 

上例在全局作用域中定義了x,y,z,對其求和:

db.eval("return x+y+z;")
 
system.js可以存放javascript代碼,這樣就可以很方便的自定義一些腳本,如用javascript寫一個日志函數,將其存放在system.js中:

 

復制代碼代碼如下:

db.system.js.insert(
  {
    "_id":"log",
    "value":function(msg,level)
        {
          var levels=["DEBUG","WARN","ERROR","PATAL"];
          level=level?level:0;
          var now= new Date();
          print( now +" "+ levels[level]+msg);
        }
  }
)

 

調用:

 

復制代碼代碼如下:

db.eval("log('refactor bolg test',1)")

 

使用存儲的javascript缺點是代碼會與常規的源代碼控制脫離,會弄亂客戶端發送來的javascript.
最適合使用存儲javascript的情況就是程序中有個地方都要用到一個javascript函數,這樣要是更新的話,只需更新這個函數而不必沒出都修改.要是javascript代碼很長又要繁瑣使用的話,也可以使用存儲javascript,這樣一次會節省不少傳輸時間.

三、安全性

執行javascript代碼就要考慮MongoDB的安全性.
如:

 

復制代碼代碼如下:

>func="function(){print('hello,"+username+"!');}"

 

如果username是用戶自定義的,可以使用這樣的字符串"');db.dropDatabase();print('",
代碼就變成了這樣:

 

復制代碼代碼如下:

>func="function(){print('hello,');db.dropDatabase();print('!');}"

 

為了避免這種情況,要限定作用域.
絕大多數驅動程序都為傳遞給數據庫的代碼提供了一種特殊類型,這是因為代碼實際上可以看成是一個字符串和一個作用域的組合.作用域是一個保存著變量名和值映射關系的文檔.當javascript函數執行的時候,這種映射就構成了函數的局部作用域.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
秋霞av国产精品一区| 亚洲国产精品久久久久秋霞蜜臀| www欧美xxxx| 最近中文字幕mv在线一区二区三区四区| 亚洲成人精品在线| 精品亚洲国产视频| 中文字幕久久久| 国产精品色视频| 亚洲高清色综合| 日韩中文字幕欧美| 亚洲专区中文字幕| 色偷偷偷亚洲综合网另类| 欧美另类极品videosbestfree| 日韩av有码在线| 日韩久久免费电影| 欧美日韩国产成人在线| 亚洲精品美女在线观看播放| 国产原创欧美精品| 欧美另类xxx| 国产中文日韩欧美| 日韩高清av在线| 欧美日韩国产色视频| 国产精品com| 国产精品视频内| 亚洲最大中文字幕| 伊人一区二区三区久久精品| 一区二区三区在线播放欧美| 色婷婷综合成人av| 国产成人欧美在线观看| 日韩电影网在线| 久久久久久久网站| 亚洲欧美日韩成人| 亚洲色图日韩av| 成人亲热视频网站| 国产成人极品视频| 日韩精品在线观| 亚洲最新视频在线| 久久伊人精品一区二区三区| 国产极品精品在线观看| 久久露脸国产精品| 日韩精品免费电影| 日韩国产在线看| 国产精品久久久久久久app| 日韩三级影视基地| 欧美大片在线看免费观看| 欧美日韩在线视频首页| 欧美老少配视频| 尤物99国产成人精品视频| 国产成人精品网站| 日本国产高清不卡| 国产精品热视频| 日韩动漫免费观看电视剧高清| 国产精品无码专区在线观看| 国产精品私拍pans大尺度在线| 国产精品吊钟奶在线| 日日狠狠久久偷偷四色综合免费| 久久精品99久久香蕉国产色戒| 国产精品久久久久久影视| 美女av一区二区| 综合国产在线观看| 亚洲国内高清视频| 国产欧美日韩免费看aⅴ视频| 亚洲理论在线a中文字幕| www.xxxx欧美| 久久亚洲成人精品| 一区二区亚洲精品国产| 精品毛片三在线观看| 欧美一级免费视频| 欧美视频在线观看 亚洲欧| 在线观看欧美日韩国产| 国产美女久久精品香蕉69| 日韩中文字幕在线播放| 九九热在线精品视频| 亚洲人成在线观看网站高清| www.色综合| 国产精品久久久久久久久| 欧美电影免费观看大全| 福利二区91精品bt7086| 91成人在线观看国产| 欧美最顶级的aⅴ艳星| 国产精品h片在线播放| 日韩国产高清视频在线| 日韩欧美大尺度| 亚洲 日韩 国产第一| 欧美成人激情图片网| 日韩电影中文字幕在线观看| 欧美另类第一页| 国产精品观看在线亚洲人成网| 色爱av美腿丝袜综合粉嫩av| 国产精品观看在线亚洲人成网| 亚洲天堂av在线播放| 精品网站999www| 国产精品久久色| 欧美激情精品久久久久久| xxx一区二区| 97久久精品国产| 久久久久久久久久av| 国产成人精品在线观看| 中文字幕成人精品久久不卡| 欧美一区二区大胆人体摄影专业网站| 国产精品视频内| 欧美性猛交xxxx免费看漫画| 日韩av中文字幕在线免费观看| 久久精品亚洲精品| 日韩欧美在线视频观看| 欧美激情一区二区三区高清视频| xxxxxxxxx欧美| 91亚洲午夜在线| 成人444kkkk在线观看| 最近2019好看的中文字幕免费| 欧美日本在线视频中文字字幕| 亚洲综合一区二区不卡| 在线观看视频亚洲| 欧美日韩人人澡狠狠躁视频| 国产精品福利在线观看网址| 激情久久av一区av二区av三区| 国产精品美乳一区二区免费| 久久免费视频在线| 欧美激情一区二区三区在线视频观看| 欧美日韩国产影院| 97超级碰在线看视频免费在线看| 亚洲欧美制服第一页| 亚洲va电影大全| 欧美诱惑福利视频| 91热福利电影| 九九精品在线观看| www.亚洲一区| 日韩在线观看免费高清完整版| 国产精品久久久久久亚洲影视| 91美女福利视频高清| 久久99视频精品| 亚洲天堂开心观看| 日韩一区二区精品视频| 久久久久久国产三级电影| 精品视频—区二区三区免费| 国产一区二区三区在线观看视频| 国产成人啪精品视频免费网| 91国偷自产一区二区三区的观看方式| 日韩视频在线观看免费| 欧美极品少妇xxxxⅹ裸体艺术| www国产亚洲精品久久网站| 久久99视频免费| 欧美诱惑福利视频| 少妇高潮久久久久久潘金莲| 日韩精品在线看| 91精品国产91久久久久久吃药| 亚洲理论电影网| 欧美肥婆姓交大片| 久久久久久久色| 国产91久久婷婷一区二区| 日韩网站免费观看高清| 欧美日韩免费在线| 国产精品专区h在线观看| 精品偷拍一区二区三区在线看| 国产一区二区三区丝袜| 国产91精品久久久久久| 亚洲国产精品yw在线观看| 国产精品日日做人人爱| 午夜精品国产精品大乳美女| 欧美在线视频观看免费网站| 日韩电影免费观看中文字幕| 国产在线精品自拍| 国产精自产拍久久久久久蜜| 日韩中文字幕av|