更新MongoDB中的嵌套文档

更新MongoDB中的嵌套文档,mongodb,nosql,Mongodb,Nosql,我正在尝试更新嵌套在MongDB文档中的哈希。 我知道用于数组的$push函数,以及用于完全覆盖元素的$set,但我不太了解我想要的行为 以下是我想要得到的: 之前: { 'id' => 1234, 'evaluators' => { 'A' => { 'x' => 2, 'y' => 4 }, } } { 'id' => 1234, 'evaluators' => { 'A' => { 'x' => 2

我正在尝试更新嵌套在MongDB文档中的哈希。 我知道用于数组的
$push
函数,以及用于完全覆盖元素的
$set
,但我不太了解我想要的行为

以下是我想要得到的:

之前:

{
  'id' => 1234,
  'evaluators' => {
    'A' => { 'x' => 2, 'y' => 4 },
  }
}
{
  'id' => 1234,
  'evaluators' => {
    'A' => { 'x' => 2, 'y' => 4 },
    'B' => { 'x' => 3, 'y' => 5 },
  }
}
预期,之后:

{
  'id' => 1234,
  'evaluators' => {
    'A' => { 'x' => 2, 'y' => 4 },
  }
}
{
  'id' => 1234,
  'evaluators' => {
    'A' => { 'x' => 2, 'y' => 4 },
    'B' => { 'x' => 3, 'y' => 5 },
  }
}
我试过(用Ruby)做:

但它会覆盖我的
求值器的内容
散列,结果是:

{
  'id' => 1234,
  'evaluators' => {
    'B' => { 'x' => 3, 'y' => 5 },
  }
}
我可以通过查询将整个文档加载到Ruby中,更改数据并将其重新插入数据库,但我想知道是否有更好的方法我不知道。

试试这个:

coll.update({ :id = > id }, { '$set' => {
    "evaluators.#{evaluator_name}" => {
        'adequacy' => adequacy, 'fluency' => fluency
    }
}})