模式实例化后如何使猫鼬模式属性唯一(已包含数据)

Posted

技术标签:

【中文标题】模式实例化后如何使猫鼬模式属性唯一(已包含数据)【英文标题】:How to make a mongoose schema attribute unique after the schema is instantiated (already contains data) 【发布时间】:2021-11-13 13:34:00 【问题描述】:

我有一个猫鼬模式,

const loggerSchema = mongoose.Schema(
    
        // Other ...
        cluster: 
            type: String,
            required: true,
        ,
        // ...
    
)

它目前充满了大量数据。我想修改cluster属性如下

const loggerSchema = mongoose.Schema(
    
        // Other ...
        cluster: 
            type: String,
            required: true,
            unique:true
        ,
        // ...
    
)

如何在不丢失任何数据(在数据库中)的情况下实现这一目标?前提是所有现有数据都包含 cluster 属性的唯一值。

【问题讨论】:

可能是***.com/questions/7617002/…的副本 【参考方案1】:

如果您确定 cluster 没有重复值,您可以按照您提到的那样立即更改您的架构(如果有重复,它将无法在 cluster 上创建唯一索引)。 阅读有关独特选项 here 的更多信息。

【讨论】:

以上是关于模式实例化后如何使猫鼬模式属性唯一(已包含数据)的主要内容,如果未能解决你的问题,请参考以下文章

执行查找查询时如何使猫鼬失败

如何将猫鼬模式从唯一的 true 更改为唯一的 false

通过 POST 请求更新猫鼬模式的属性

设置自己的猫鼬模式 _id 属性

猫鼬模式包含整个数据库对象而不是定义的模式对象

1.5(设计模式)单例模式