如何将现有值(类型:字符串)更新为对象数组和 mongoDB 中的对象?

How to update exists value (type: string) to array of ojbect and object in mongoDB?

我有以下文件:

[
  {
    "_id": "6245131fdbcda3639d75c951",
    "username": "joy",
    "description": "description english",
    "product_code_origin": "aaaa-a",
    "product_code_filter": "aaaaa"
  },
  {
    "_id": "6245131fdbcda3639d75c952",
    "username": "joy2",
    "description": "description 222",
    "product_code_origin": "bbbb-b",
    "product_code_filter": "bbbbb"
  }
]

描述将是字符串的对象。

描述:字符串 => 描述:{description_en:存在字符串值}

product_code_origin 和 product_code_filter 将是对象数组。

product_code_origin:字符串,product_code_filter:字符串 => [{product_code_origin:存在字符串值,product_code_filter:存在字符串值}]

更新后的文档看起来像

[
  {
    "_id": "6245131fdbcda3639d75c951",
    "username": "joy",
    "description": {"description_en": "description english", "description_ko":""},
    "product_code": [
       {
        "product_code_origin": "aaaa-a",
        "product_code_filter": "aaaaa"
       },
     ]
  },
  {
    "_id": "6245131fdbcda3639d75c952",
    "username": "joy2",
    "description": {"description_en": "description 222", "description_ko":""}
    "product_code": [
      {
        "product_code_origin": "bbbb-b",
        "product_code_filter": "bbbbb"
      }
     ]
  }
]

使用update-documents-with-aggregation-pipeline

db.collection.update({},
[
  {
    $set: {
      description: {
        description_en: "$description",
        description_ko: ""
      },
      product_code: [
        {
          product_code_origin: "$product_code_origin",
          product_code_filter: "$product_code_filter"
        }
      ]
    }
  },
  {
    $unset: [
      "product_code_origin",
      "product_code_filter"
    ]
  }
],
{
  multi: true
})

mongoplayground