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

Is it possible to update a property of an embedded document in an embedded document (each in arrays)?

考虑这份文件:

{
    "_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" 的,比方说字段 ip,对于 taksname = "Ask for an IP" 的任务?

我可以更新更高一级的属性(如 TaskName),但是如果嵌入文档包含一组嵌入文档怎么办?

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

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

但是您可以做的(假设您知道 "task" 元素的位置)是指定如下位置:

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