2013-02-14 57 views
1

有幾個關於如何在MongoDB中創建「存儲過程」(here is one)的示例,但它們僅顯示如何直接添加代碼例如在mongo shell中。對於任何非平凡的存儲過程,人們都希望將代碼存儲在.js文件中,並將該文件導入到MongoDB中。這樣它可以很容易地編輯,版本等。如何從.js文件(作爲存儲過程)在MongoDB中存儲JavsScript代碼

有沒有辦法做到這一點?

+0

什麼是你想實現什麼? (在鏈接的博客文章中使用技術特別不被10gen推薦:http://docs.mongodb.org/manual/applications/server-side-javascript/)目前在MongoDB中不建議在數據庫中運行JS。它不是用「存儲過程」模型設計的。 – WiredPrairie 2013-02-14 21:03:22

+0

我想從我的web服務器調用一個單獨的mongodb函數,它在返回最終結果之前執行多個查詢,而不必因爲臨時數據而進出數據庫。 10gen不鼓勵這種做法很奇怪,然後提供很好的文檔和API支持來做到這一點。 – user1332148 2013-02-14 21:27:05

+0

它不是「很好」,你必須使用eval,它不是一個本地API來執行JS函數,它就像黑客做它不應該使用的全局鎖和函數那樣不能跨越碎片使用。存儲過程很少需要,並且在支持它們的數據庫中經常被濫用。我會確保你實際上獲得任何使用它們的性能。至於讓他們工作,我不確定你如何能夠高效地工作。 – Sammaye 2013-02-14 21:54:19

回答

3

您可以使用下面的語法:

$ mongo mydb import.js 

而且書寫進口腳本里面的說明,即:

var myfunc = function(x, y){ return x + y; }} 

db.system.js.save({_id:"myfunc", value: myfunc);