更新mongoid中包含哈希的数组字段

Sam*_*bit 1 ruby-on-rails mongodb mongoid ruby-on-rails-4

我XYZ收集的文件如下.

"_id" : ObjectId("55311e4487216d7063040000"),
"colours" : [
    {
         "value" : 1,
         "colour" : "red"
    },
    {
         "value" : 2,
         "colour" : "green"
    }
]
Run Code Online (Sandbox Code Playgroud)

我需要更新值为1的颜色名称.我应该写什么查询?

我使用的是rails 4.1.2,mongoid 4.0.0.

请帮忙.

Max*_*nko 7

例如,您想将其更改为"黄色":

XYZ.where(_id: "55311e4487216d7063040000").elem_match(colours: { value: 1 }).update("$set" => {"colours.$.colour" => "yellow"})
Run Code Online (Sandbox Code Playgroud)