ruby-on-rails 使用Mongoid在Rails中执行原子块事务

wfsdck30  于 2022-12-15  发布在  Ruby
关注(0)|答案(2)|浏览(132)

我在应用中使用 Rails 4.1.4Mongoid
我只是想知道是否有一种方法可以在 Rails 中使用 Mongoid 原子地执行块事务。
为了让事情更清楚,假设我有:

some_model_instance = SomeModel.find(some_id)
some_model_instance.some_attribute = "Some Attribute Value"
some_model_instance.save
other_model_instance = OtherModel.find(other_id)
other_model_instance.other_attribute = "Other Attribute Value"
other_model_instance.save

我想把代码 Package 在一个原子事务中,我的意思是,如果出现问题,我不想把两个示例(some_model_instance,other_model_instance)都保存到数据库中。
我已经看到,ActiveRecord 的情况如下:

SomeModel.transaction do
    # do stuff I did above
end

这对 * 蒙哥人 * 也有效吗?
谢谢你的帮助!!!

laawzig2

laawzig21#

封闭式问题
MongoDB不支持事务,它只对单个文档执行原子操作,因此无法使用Mongoid进行 “原子块事务”

最好的。

qoefvg9y

qoefvg9y2#

这是一个老问题,但只是为未来的访问者添加一个更新。MongoDB引入了多文档事务,这有助于将多个文档事务捆绑为一个。
从Mongo的文档中:
对于需要原子性读写多个文档(在单个或多个集合中)的情况,MongoDB支持多文档事务,通过分布式事务,可以跨多个操作、集合、数据库、文档和碎片使用事务。
以下是详细信息的参考:https://www.mongodb.com/docs/manual/core/transactions

相关问题