我想确定我的数据是否在MongoDB中成功保存。在某些情况下,MongoDB采用fire_andforfor策略,我想在驱动程序级别指定Write Concern {w:majority,j:1},在我的例子中是Mongoid。
用例:
我想确保我的用户拥有唯一的“昵称”,并且无法注册违反唯一性。
我已经在'昵称'字段上创建了一个唯一索引。
答案 0 :(得分:2)
对于副本集,您可以使用以下配置,如http://mongoid.org/en/mongoid/docs/installation.html#replica中所述:
consistency: :strong
与此同时,您需要启用安全模式,如http://mongoid.org/en/mongoid/docs/tips.html#safe_mode所述:
safe: true
看起来你不能像这样设置MongoDB的w
参数,但你可以在Band文档操作上设置它 - 这将是每个查询:
Band.with(safe: { w: 3 })
您也可以使用以下会话执行此操作:
Band.mongo_session.with(safe: { w: 3 }) do |session|
session[:artists].find(...)
end
答案 1 :(得分:0)
简短的回答:你做不到。
答案很长:
考虑使用多个数据存储选项。当没有必要的时候,人们经常会跳过NoSQL的潮流。如果您需要保证写入,则应使用关系数据库,或考虑使用orientDB等混合。缺乏有保证的写入是MongoDB等解决方案可以很好地扩展的重要原因之一。