我有一个带有哈希字段的Mongoid模型,如下所示:
class DimensionStat
include ::Mongoid::Document
include ::Mongoid::Timestamps
field :data, type: Hash
attr_accessible :data
end
我用
之类的东西假装运行时填充数据data: {
'a' => 1,
'b' => 2,
...
}
我需要以原子方式对多个键执行增量,例如:
'a' => -1,
'b' => 5
某处我发现:
instance.collection.find(_id: my_id).update("$inc" => {'data.a' => -1,
'data.b' => 5})
会做的伎俩,但它没有,我做错了什么?
更新: 我使用的是mongoid 3.1.6
答案 0 :(得分:3)
.inc
方法与不存在的键完美配合,但文档不会自动从数据库刷新。尝试:
dimension_stat.inc('data.a' => -1, 'data.b' => 5)
puts dimension_stat.data['a'] # not changed
dimension_stat.reload
puts dimension_stat.data['a'] # changed
你会看到计数器已经改变了。