是否可以更新嵌入文档中的嵌入文档的属性(每个都在数组中)?

时间:2015-02-03 11:09:32

标签: mongodb

考虑此文件:

{
    "_id" : ObjectId("54d0a5cdc9311cad167f55d5"),
    "Title" : "Add Solaris Zone",
    "Type" : "System",
    "Tasks" : [
            {
                    "TaskName" : "Ask for an IP",
                    "TaskDescription" : "Ask to network team for an ip adress",
                    "Custom" : [
                            {
                                    "id" : ObjectId("54d0a5cdc9311cad167f55d3"),
                                    "name" : "ip",
                                    "value" : ""
                            },
                            {
                                    "id" : ObjectId("54d0a5cdc9311cad167f55d4"),
                                    "name" : "vlan",
                                    "value" : ""
                            }
                    ],
                    "Prerequisites" : [ ]
            }

}

是否有可能更新属性“value”,比如说field ip,用于taksname =“Ask for a IP”的任务?

我能够将属性更高一级(如TaskName),但是如果嵌入文档包含嵌入文档数组会怎样?

1 个答案:

答案 0 :(得分:0)

通常,要更新嵌套数组中的字段,可以使用$运算符。 http://docs.mongodb.org/manual/reference/operator/update/positional/

但是,由于它只能使用一次,因此无法更新嵌套在neasted数组中的数组元素。

你能做什么(假设你知道“任务”元素的位置是)是指定位置,如:

update({...}, { $set: {"Tasks.0.Custom.$.value": "MyVal"}})