2012-03-24 87 views

回答

2

这听起来像你引用server-side functions

创建/更新服务器端的功能是作为更新system.js集合一样简单:

db.system.js.save({ _id : "foo" , value : function(x , y){ return x + y; } }); 

这里的问题是真正的“使用”服务器端功能。首先,你必须写一些尴尬的更新/插入语句。其次,这些不是存储过程。它们不是为了速度而编译的,目的是在服务器上运行它们。

如果使用服务器端功能查询不会使用索引进行任何函数中。另外它将使用引擎盖下的eval功能,它可以锁定您的数据库。

而且,没有触发,所以你也不能用于触发使用这些。

总体而言,没有大量使用服务器端的功能,这可能是为什么他们得到的文档3段。

如果您需要先进的查询功能看看新的聚合框架。如果你正在寻找某种形式的触发器,你将不得不推出自己的触发器。如果你正在寻找存储过程,这其实不是。

+0

嗯。如果这是如此混乱,为什么它确实存在?是否有任何情况下只能使用服务器端功能来解决问题? – antitoxic 2012-03-24 19:43:29

+0

我认为这是当他们认为它可能是下一个存储过程时创建的那些东西之一。但是,这个梦真的是因为他们一次只能有一个javascript解释器的实例而破灭。值得记住的是,MongoDB只有几年的历史,他们没有足够的人来真正更新文档。 – 2012-03-25 06:15:21

+0

还有一件事:我阅读** mapReduce **您描述的所有回退应用于mapReduce **吗? – antitoxic 2012-03-25 07:46:23

相关问题