mongodb執行js指令碼(一)---shell執行
阿新 • • 發佈:2018-12-24
作為一個數據庫,MongoDB有一個很大的優勢—它使用js管理資料庫,所以也能夠使用js指令碼進行復雜的管理 mongodb 的shell是javascript實現的,如果直接使用js實現相應的功能則顯得很直觀和簡便。 比如我們對一些資料進行 統計計算,除了使用mapreduce之外,直接使用js也是很好的選擇。 還有一些批處理,資料同步都可以使用js使用js指令碼進行互動的優點與缺點
(1)無需任何驅動或語言支援; (2)方便cron或管理員定時任務; (3)注意點:任然是資料格式的問題;js指令碼一般會用來執行以下任務
(1)備份; (2)排程map-reduce命令;(3)離線報告,離線任務; (4)管理員定時任務;如何執行一個js指令碼
./mongo 127.0.0.1:3003/test –quiet test.js 說明: (1)./mongo mongo客戶端-_-; (2)127.0.0.1:3003/test 伺服器的ip,port,以及需要連線的資料庫; (3)–quiet 省略一些頭資訊 (4)test.js 待執行的指令碼,內容是: db.test.find().forEach(printjson); 也可以使用–eval引數 ./mongo 127.0.0.1:3003/test –eval “db.test.find().forEach(printjson);”–eval引數後面直接跟一個js語句。其他的一些說明
(1)通常使用兩種方法列印獲取到的結果: print() => 普通js printjson() => 格式化json列印,打印出來的格式會漂亮許多 (2)迭代器(iterator command)在指令碼操作中將失效 (3)如何知道insert、delete、update等操作是否成功呢,請使用: db.getLastErrorObj() 或者 db.getLastError() (4)js shell的相關介紹見:使用示例
我現在的mongodb資料庫有一個集合叫user,我通過js把給每個文件新增一個trueName欄位,並賦值等於userName。 再讓userName欄位 的值 後面加上 110.
新建js檔案
新建一個fn_add_truename_add110_to_username.js檔案 內容為:db.user.find().forEach(function(item){ item.trueName=item.userName; item.userName=item.userName+"110"; db.user.save(item); } )
傳送js到bin目錄
傳送到linux的mongodb安裝資料夾bin目錄下
執行js檔案
在linux系統中 進入mongodb安裝目錄bin目錄在bin目錄下執行命令cd /usr/local/mongodb/mongodb-linux-x86_64-2.6.10/bin/
./mongo 127.0.0.1:27017/test –quiet fn_add_truename_add110_to_username.js
也可以進入mongo後 直接把js目錄複製貼上 回車執行:["字串1","字串2"].forEach(function(item){print(item + '\t' + db.resultTxt.count({ "resultDetail.diseaseResult.highDiseaseResultDetails.name" : item }))})
檢視結果