MongoDB存储过程不在javascript中

时间:2012-06-05 16:15:44

标签: mongodb stored-procedures triggers

我有一些集合,我想对每个插入到该集合中执行操作。问题是将执行此操作的代码是Java。在Oracle中,可以将Java甚至C代码包装到PL / SQL过程中,然后在触发器中使用此过程。在CouchDB中,我们可以编写一个视图。 MongoDB最接近的模拟是什么? 我能想到的最好的可能性是将我的代码包装到REST服务器中,然后使用存储的javascript与它进行交互。

我已经看过this问题了,但是由于依赖于java libs,我不能在我的工作流程中只使用javascript,我也不想和mongodb一起运行新的重服务还有其他一些方法可以做到这一点。

1 个答案:

答案 0 :(得分:3)

您的请求有很多要说的内容:

  

我有一些集合,我想对每个插入集合执行操作。

1)你在这里要求的并不是真正的“存储过程”,而是真正的“数据库触发器”。 MongoDB不提供任何类型的“数据库触发器”功能。

这与MongoDB的一般设计目标是一致的,MongoDB提供了一个非常快速,可扩展的数据存储,而没有传统DBMS系统的重量。有关MongoDB设计目标的更多详细信息,请参阅此演示文稿:http://www.10gen.com/presentations/mongosf2011/whymongodb

2)如果您希望在每次插入时执行某些数据处理,则需要在MongoDB连接的客户端执行此操作。这必然涉及在您的应用程序中编写一些代码。

3)我建议你尽量避免在mongod服务器中运行JavaScript。 JavaScript在服务器端进行解释,因此查询速度会受到影响。此外,在mongod服务器中运行的所有JavaScript都是单线程的,因此没有任何JavaScript执行的并发性。

我希望我有更好的答案。