首页  编辑  

Mongodb迁移老string数据为array类型

Tags: /Mongodb/   Date Created:
  • 背景
现有如下Mongodb数据结构:
{
  category: "aaa",
  // …. 其他字段
}
现在因为业务变更,需要把 category 更改为 [],为了处理老数据,需要把现有的数据,从 “aaa” 更改为 ["aaa"],并且老数据中有ALL的值,对ALL的,需要更改为 ["aaa", “bbb”],如何实现?
  • 解决方法
db.collection.updateMany(
   {},
   [{
       $set: {
           "category": {
               $cond: {
                   if: { $eq: ["$category", "ALL"] },
                   then: ["AAA", "BBB"],
                   else: { $cond: { if: { $not: { $isArray: "$category" } }, then: ["$category"], else: "$category" } }
               }
           }
       }
   }]
)