首页 > 解决方案 > 更新模式而不删除 mongodb 中的集合

问题描述

我的架构看起来像:

const UserSchema = Schema({
    _id: mongoose.Schema.Types.ObjectId,
    userName: {
        type: String,
        required: true,
    },
    userPhoneNumber: {
        type: String,
    },
    role:[{
        type:mongoose.Schema.Types.ObjectId,
        ref:Role
    }]
});

使用此架构,我在数据库中添加了带有role:[]. 但现在根据要求,我需要在不删除现有集合的情况下更新架构。我需要更新数据,所有字段都相同,除了角色。我想用角色更新现有记录

role:[{
    department:{
        type:string
    },
    roleNames:[{
        type:type: mongoose.Schema.Types.ObjectId,
        ref:Role
    }]
}]

那么如何在不删除集合的情况下更新架构。

标签: node.jsmongodbmongooseschema

解决方案


MongoDB 的诞生就是为了解决这种类型的模式问题,您只需添加另一个具有默认值的字段,就像这样

旧架构:

new Schema({
    name: { type: string }
})

带有出生地字段的新架构:

new Schema({
    name: { type: string },
    birthplace: { type: string, required: true, default: 'neverborn' }
});

推荐阅读