2013-02-14 92 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);