Я использую mongoid 3.1 с Ruby 1.9.3, и я пытаюсь обновить значение в массиве. Я могу успешно выполнить следующую команду в CLI mongodb, но не могу найти подходящее решение/перевод для mongoid.mongoid элементы обновления внутри массива
user.update({ activities: { $elemMatch: { uuid: "1111111-xxxx-xxxx" }}}, { $set: { 'activities.$.submitted': true }})
Для контекста документа выглядит следующим образом:
{
"_id" : ....,
"user_name" : "bob",
"activities: [
{
uuid: "1111111-xxxx-xxxx",
submitted: true,
},
{
uuid: "222222-xxxx-xxxx",
submitted: false,
},
{
uuid: "333333-xxxx-xxxx",
submitted: false,
}
]
}
Цель состоит в том, чтобы измениться представляется истинным на основе UUID значения. Из того, что я могу сказать, все «обновления» решений в mongoid касаются только атрибутов в корневом каталоге документа и не могут иметь опций для оператора $ positional.
Любая помощь будет оценена по достоинству.
Спасибо
Похоже, я нашел ответ в обсуждении вопроса GitHub. Решение для меня было: User.elem_match (действия: {type: "redemption"}). Elem_match (действия: {uuid: uuid}). Update ("$ set" => {"activities. $. отправлено "=> true}) –