子文档内部的mongoDB子文档更新

时间:2019-09-21 08:33:47

标签: node.js mongodb mongoose

我有一个深层嵌套的文档结构,如下所示:

我有_id 1-请指导如何更新显示的字段(注意:它是基于_id的任何子项) 2-如果该文档需要在n级更新(例如childsOfLevel15),该怎么办? 3-有没有更好的方法来设计以上内容(我尝试过使用多个集合,但是使用$ lookup聚合会导致更多的复杂性)。

{
        _id : "xxxxxxxxxxx25",
        fieldAtlevel1 : "field value at 1 for document 1",
        childsOfLevel1: [
             {
                 _id: "xxxxxxxxxx500",
                 fieldsAtlevel2 : "field value at 2",
                 childsOfLevel2 : [
                       {
                            _id : "xxxxxxxxxx2500",
                            fieldsAtLevel3 : "field value at 3"
                            childsOfLevel3 : [
                                  {
                                       _id : "xxxxxxxxxxx25001",
                                      field1AtLevel4 : "value 1",
                                      field2AtLevel4 : "value 2",
                                      field3AtLevel4 : "value 3",
                                      field4AtLevel4 : "value 4",
                                  },
                                  {
                                       _id : "xxxxxxxxxxx25002",
                                      field1AtLevel4 : "value 1",
                                      field2AtLevel4 : "value 2",
                                      field3AtLevel4 : "value 3",
                                      field4AtLevel4 : "value 4",
                                  }, {}, {}, {} ...
                            ]
                       }, {}, {}, {} ....
                 ]
             }, {}, {}, {} ....
        ]
    },
    {
        _id : "xxxxxxxxxxx26",
        fieldAtlevel1 : "field value at 1 for document 2",
        childsOfLevel1: [
             {
                 _id: "xxxxxxxxxx700",
                 fieldsAtlevel2 : "field value at 2",
                 childsOfLevel2 : [
                       {
                            _id : "xxxxxxxxxx3500",
                            fieldsAtLevel3 : "field value at 3"
                            childsOfLevel3 : [
                                  {
                                       _id : "xxxxxxxxxxx55001",
                                      field1AtLevel4 : "value 1",
                                      field2AtLevel4 : "value 2",
                                      field3AtLevel4 : "value 3",
                                      field4AtLevel4 : "value 4",
                                  },
                                  {
                                       _id : "xxxxxxxxxxx55002",
                                      field1AtLevel4 : "value 1",
                                      field2AtLevel4 : "value 2",
                                      field3AtLevel4 : "value 3",
                                      field4AtLevel4 : "value 4",
                                  }, {}, {}, {} ...
                            ]
                       },
                       {
                            _id : "xxxxxxxxxx3501",
                            fieldsAtLevel3 : "field value at 3"
                            childsOfLevel3 : [
                                  {
                                       _id : "xxxxxxxxxxx55011",
                                      field1AtLevel4 : "value 1",
                                      field2AtLevel4 : "value 2",
                                      field3AtLevel4 : "value 3",
                                      field4AtLevel4 : "value 4",
                                  },
                                  {
                                       _id : "xxxxxxxxxxx55012",
                                      field1AtLevel4 : "value 1",
                                      field2AtLevel4 : "value 2",
                                      **field3AtLevel4 : "value 3",  <---- To update this Only**
                                      field4AtLevel4 : "value 4",
                                  }, {}, {}, {} ...
                            ]
                       }, {}, {}, {} ....
                 ]
             }, {}, {}, {} ....
        ]
    }

0 个答案:

没有答案