Я пытаюсь обновить хеш, вложенный в документ 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,измените данные и вставьте их в базу данных, но мне было интересно, есть ли лучший способ, о котором я не знаю.