Mongodb Mongoid';设置';嵌套哈希中的值

Mongodb Mongoid';设置';嵌套哈希中的值,mongodb,mongoid5,Mongodb,Mongoid5,我得到了以下文件 { 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中的一个bug(由Neil发现)。以下是您如何暂时避开此问题(直到升级): 链接的jira票证中有一个替代解决方

我得到了以下文件

{ 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中的一个bug(由Neil发现)。以下是您如何暂时避开此问题(直到升级):


链接的jira票证中有一个替代解决方案。

显示如何定义模型的代码。打开日志记录并查看对MongoDB的实际请求如何。这篇文章似乎有一个合理的指示:@NeilLunn:是的,我复制了。它确实执行
“$set”=>{“a”=>{“b”=>{“c1”=>3}}
。奇怪的问题被标记为Mongoid 5你也用过吗@SergioTulentsev?哎哟!错误确认
C.where(id: object_id).update('a.b.c1' => 5)