我们需要在MongoDB数据库中创建一个原子例程。
我们需要迭代一个集合,从集合中的所有文档中找到给定字段的最高数目,然后增加它。我们正在处理一些需要集成的遗留数据,否则我们已经有了一些原子序列。
如何在MongoDB中创建可以原子运行整个例程的存储JS或存储过程?
我看到了一些信息,但在我看来没有什么特别清楚的:
https://groups.google.com/forum/#!topic/mongoose-orm/sPN3wfDstX4
https://github.com/mongoosejs/mongoose-function
在哪里可以找到好的信息,如何实际编写运行在MongoDB中的原子/阻塞存储过程,以及如何从应用程序中实际调用存储过程?
发布于 2017-08-02 06:01:58
(总结上述评论)
目前,mongodb中没有任何东西允许您以原子方式运行任意逻辑(例如,包括多个查询来收集数据)。
mongodb必须提供的最好的原子功能是findAndModify。它的原子性自然仅限于一个文档,并且您有一个非常有限的更新操作符列表(也就是说,您甚至不能使用文档的字段,就像常规更新一样)。
使用应用程序级别的锁是可能的:应用程序插入或修改一个特殊的锁文档,这将向应用程序的其他部分发出信号:“我正在使用/更新此锁,请不要碰它”。操作完成后,应用程序就会释放锁,所以它现在可以由其他人重新获得了。当然,这完全取决于遵守锁协议的行为者,这一点不太可靠,可以温和地说。
https://stackoverflow.com/questions/45312769
复制相似问题