我正在使用mongoid 3.1和Ruby 1.9.3,我正在尝试更新数组中的值。我可以在mongodb的CLI中成功执行以下命令,但似乎无法为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值将提交更改为true。据我所知,mongoid中的所有“更新”解决方案只处理文档根目录中的属性,并且不能为$ position运算符提供选项。
任何帮助都将不胜感激。
谢谢
答案 0 :(得分:2)
看起来我在github问题讨论中找到了答案。
我的解决方案是:
User.elem_match(activities: { type: "redemption" }).elem_match(activities: { uuid: uuid }).update("$set" => {"activities.$.submitted" => true })