Mongo-DB更新查询

jhkqcmku  于 2022-10-22  发布在  Go
关注(0)|答案(1)|浏览(125)

我想要将我现有MongoDB数据库中的位置字段从:
C01-S14-D05-->集装箱01-货架14
我需要对数千个文档执行此操作,因此我需要一种快速的方法来完成此操作。我需要将编号容器和货架编号存储在变量中,然后需要将该字段更新为新格式。(请注意,我将完全摆脱D05(抽屉5))

6kkfgxo0

6kkfgxo01#

您在问题中提供的信息越多,我们将能够更好地提供帮助。此答案假定您的文档具有类似于以下内容的现有结构:

{
  _id: 1,
  location: "C01-S14-D05"
}

这个答案还假设每个标识符都有一个字母,然后是两个数字。如果是这样,那么类似于以下内容的解决方案应该是可行的,或者至少可以作为一个良好的起点:

db.collection.update({},
[
  {
    $addFields: {
      location: {
        $let: {
          vars: {
            vals: {
              $split: [ "$location", "-" ]
            }
          },
          in: {
            "$concat": [
              "Container",
              {
                "$substr": [
                  { "$arrayElemAt": [ "$$vals", 0 ] },
                  1,
                  2
                ]
              },
              "-Shelf",
              {
                "$substr": [
                  { "$arrayElemAt": [ "$$vals", 1 ] },
                  1,
                  2
                ]
              }
            ]
          }
        }
      }
    }
  }
])

Playground demonstration here

相关问题