更新包含 mongoid 中的散列的数组字段

Updating an array field that contains hashes in mongoid

我在XYZcollection中有一个文档如下。

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

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

我正在使用 rails 4.1.2,mongoid 4.0.0。

请帮忙。

例如你想把它改成 "yellow" :

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