【问题标题】:MONGO DB updating nested arrayMONGODB 更新嵌套数组
【发布时间】:2019-02-20 19:50:42
【问题描述】:

Below Array this Exisiting in DataBase and
[{
    name: 'Courier Received by Investor',
    value: true
  },
  {
    name: 'Courier Sent By Investor',
    value: false
  },
  {
    name: 'Signed CA-Doc received',
    value: false
  },
  {
    name: 'Cheque/Payment Received',
    value: false
  },
  {
    name: 'Cancelled Cheque Received',
    value: false
  },
  {
    name: 'ID Proof Received',
    value: false
  },
  {
    name: 'Address Proof Received',
    value: false
  },
  {
    name: 'Signed CA pictures/scan received',
    value: false
  }
]


 I WANT TO UPDATE THESE BELOW FIELDS IN THE ABOVE ARRAY, CAN ANYONE HELP ME WITH THIS?


[{
    name: 'Courier Received by Investor',
    value: true
  },
  {
    name: 'Courier Sent By Investor',
    value: true
  },
  {
    name: 'Cheque/Payment Received',
    value: true
  }
]

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您可以使用 arrayFiltersfiltered positional operator 来执行此操作。

    例如,假设您创建的文档具有以下结构(arrayField 是用于保存数组值的字段名称):

    {
        arrayField: [{
                name: 'Courier Received by Investor',
                value: true
            },
            {
                name: 'Courier Sent By Investor',
                value: false
            },
            {
                name: 'Signed CA-Doc received',
                value: false
            },
            {
                name: 'Cheque/Payment Received',
                value: false
            },
            {
                name: 'Cancelled Cheque Received',
                value: false
            },
            {
                name: 'ID Proof Received',
                value: false
            },
            {
                name: 'Address Proof Received',
                value: false
            },
            {
                name: 'Signed CA pictures/scan received',
                value: false
            }
        ]
    }
    

    您可以更新 Courier Sent By Investor 的所有条目并将其设置为 true,如下所示:

    db.collection.update({}, {
        $set: {
            "arrayField.$[element].value": true
        }
    }, {
        multi: true,
        arrayFilters: [{
            "element.name": "Courier Sent By Investor"
        }]
    })
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 2017-09-11
      • 2019-12-07
      • 1970-01-01
      • 2018-10-22
      • 2019-06-08
      相关资源
      最近更新 更多