我正在尝试更新嵌套在MongDB文档中的哈希。
我知道数组的$push
函数和完全覆盖元素的$set
,但我无法完全理解我正在寻找的行为。
这是我想要的:
之前:
{
'id' => 1234,
'evaluators' => {
'A' => { 'x' => 2, 'y' => 4 },
}
}
预期,之后:
{
'id' => 1234,
'evaluators' => {
'A' => { 'x' => 2, 'y' => 4 },
'B' => { 'x' => 3, 'y' => 5 },
}
}
我尝试过(在Ruby中):
coll.update({ :id => id },
{ '$set' => {
'evaluators' => {
evaluator_name => { 'adequacy' => adequacy,
'fluency' => fluency }
}
} } )
但是它会覆盖我的evaluators
哈希的内容,最后我会:
{
'id' => 1234,
'evaluators' => {
'B' => { 'x' => 3, 'y' => 5 },
}
}
我可以进行查询以将整个文档加载到Ruby中,更改数据并将其重新插入到数据库中,但我想知道是否有更好的方法我不知道。
答案 0 :(得分:2)
试试这个:
coll.update({ :id = > id }, { '$set' => {
"evaluators.#{evaluator_name}" => {
'adequacy' => adequacy, 'fluency' => fluency
}
}})