0

我想确定我的数据是否在 MongoDB 中成功持久化。由于在某些情况下 MongoDB 采用 fire_and_forget 策略,我想在驱动程序级别指定 Write Concern {w : most, j : 1},在我的情况下是 Mongoid。

用例:

我想确保我的用户有唯一的“昵称”并且不能注册违反唯一性。

我已经在“昵称”字段上创建了唯一索引。

4

2 回答 2

2

对于副本集,您可以使用以下配置,如http://mongoid.org/en/mongoid/docs/installation.html#replica所述:

consistency: :strong

除此之外,您还需要开启安全模式,如http://mongoid.org/en/mongoid/docs/tips.html#safe_mode中所述:

safe: true

看起来你不能w像这样设置 MongoDB 的参数,但你可以在 Band 文档操作上设置它——虽然这将是每个查询:

Band.with(safe: { w: 3 })

您也可以通过以下方式在每个会话中执行此操作:

Band.mongo_session.with(safe: { w: 3 }) do |session|
    session[:artists].find(...)
end
于 2013-08-08T09:39:03.433 回答
0

简短的回答:你不能。

长答案:
考虑使用多个数据存储选项。人们经常在没有必要的时候加入 NoSQL 的潮流。如果您需要保证写入,您应该使用关系数据库,或者考虑使用 orientDB 等混合数据库。缺乏有保证的写入是 MongoDB 等解决方案能够很好扩展的重要原因之一。

于 2013-08-07T18:31:35.040 回答