1
有幾個關於如何在MongoDB中創建「存儲過程」(here is one)的示例,但它們僅顯示如何直接添加代碼例如在mongo shell中。對於任何非平凡的存儲過程,人們都希望將代碼存儲在.js文件中,並將該文件導入到MongoDB中。這樣它可以很容易地編輯,版本等。如何從.js文件(作爲存儲過程)在MongoDB中存儲JavsScript代碼
有沒有辦法做到這一點?
有幾個關於如何在MongoDB中創建「存儲過程」(here is one)的示例,但它們僅顯示如何直接添加代碼例如在mongo shell中。對於任何非平凡的存儲過程,人們都希望將代碼存儲在.js文件中,並將該文件導入到MongoDB中。這樣它可以很容易地編輯,版本等。如何從.js文件(作爲存儲過程)在MongoDB中存儲JavsScript代碼
有沒有辦法做到這一點?
您可以使用下面的語法:
$ mongo mydb import.js
而且書寫進口腳本里面的說明,即:
var myfunc = function(x, y){ return x + y; }}
db.system.js.save({_id:"myfunc", value: myfunc);
什麼是你想實現什麼? (在鏈接的博客文章中使用技術特別不被10gen推薦:http://docs.mongodb.org/manual/applications/server-side-javascript/)目前在MongoDB中不建議在數據庫中運行JS。它不是用「存儲過程」模型設計的。 – WiredPrairie 2013-02-14 21:03:22
我想從我的web服務器調用一個單獨的mongodb函數,它在返回最終結果之前執行多個查詢,而不必因爲臨時數據而進出數據庫。 10gen不鼓勵這種做法很奇怪,然後提供很好的文檔和API支持來做到這一點。 – user1332148 2013-02-14 21:27:05
它不是「很好」,你必須使用eval,它不是一個本地API來執行JS函數,它就像黑客做它不應該使用的全局鎖和函數那樣不能跨越碎片使用。存儲過程很少需要,並且在支持它們的數據庫中經常被濫用。我會確保你實際上獲得任何使用它們的性能。至於讓他們工作,我不確定你如何能夠高效地工作。 – Sammaye 2013-02-14 21:54:19