2

我正在将 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 中的所有“更新”解决方案都只处理文档根目录的属性,并且没有 $ 位置运算符的选项。

任何帮助,将不胜感激。

谢谢

4

1 回答 1

2

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

我的解决方案是:

User.elem_match(activities: { type: "redemption" }).elem_match(activities: { uuid: uuid }).update("$set" => {"activities.$.submitted" => true })
于 2013-08-21T16:03:54.170 回答