Arrays 数组中的mongoid更新元素

Arrays 数组中的mongoid更新元素,arrays,mongodb,mongoid,Arrays,Mongodb,Mongoid,我将mongoid 3.1与Ruby 1.9.3结合使用,并尝试更新数组中的值。我可以在mongodb的CLI中成功执行以下命令,但似乎找不到适合mongoid的解决方案/转换 user.update( { activities: { $elemMatch: { uuid: "1111111-xxxx-xxxx" }}}, { $set: { 'activities.$.submitted': true }}) 对于上下文,文档如下所示: { "_id" : ...., "user

我将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值将Submited更改为true。据我所知,mongoid中的所有“更新”解决方案都只处理文档根的属性,不能为$positional操作符提供选项

任何帮助都将不胜感激


谢谢

看起来我在github问题讨论中找到了答案

我的解决方案是:

User.elem_match(activities: { type: "redemption" }).elem_match(activities: { uuid: uuid }).update("$set" => {"activities.$.submitted" => true })

看起来我在github问题讨论中找到了答案。我的解决方案是:User.elem_-match(活动:{type:“redemption”}).elem_-match(活动:{uuid:uuid}).update(“$set”=>{activities.$.submitted”=>true})