嵌套哈希中的 Mongoid 'set'值



>我得到了以下文档

{ a: { b: { c1: 1, c2: 2 } } }

我只想原子地将 c1 修改为 8

我确实document.set('a.b.c1': 8),但"b"的整个值都更改为{c1:8}

这是我的课

class C
  include Mongoid::Document
  field :a, type: Hash 
end

为什么?

这似乎是Mongoid 5中的一个错误(由Neil发现(。以下是您现在可以避开此问题的方法(直到您升级(:

C.where(id: object_id).update('a.b.c1' => 5)

链接的 jira 票证中还有另一种解决方法。

最新更新