Я пытаюсь обновить хэш, который вложен в документ MongDB. Я знаю о функции $push
для массивов и $set
для полностью перезаписывания элементов, но я не могу получить то поведение, которое я ищу.Обновление вложенного документа в MongoDB
Вот что я пытаюсь получить:
До:
{
'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, изменить данные и повторно вставить его в БД но мне было интересно, есть ли лучший способ, о котором я не знаю.
Работал отлично, спасибо! –