【问题标题】:MongoDB / Mongoose ensure uniqueness between array of objectsMongoDB / Mongoose 确保对象数组之间的唯一性
【发布时间】:2021-07-07 11:54:21
【问题描述】:

我有一个看起来像这样的架构。

{
    username : "SomeUser",
    modules : 
    [
        {
           
                moduleName : "moduleName",
                moduleDesc : "moduleDescription"
            
        }
    ]
}

我想达到什么目的:

moduleDetails 对象中不应有任何重复的“moduleName”,它是“modules”数组的一部分。

例如:

这是不允许的。

{
    username : "SomeUser",
    modules : 
    [
        {
            
                moduleName : "SameName",
                moduleDesc : "moduleDescription"
            
        },
        {
            
                moduleName : "SameName",
                moduleDesc : "moduleDescription"
            
        }
    ]
}

虽然,这应该被允许

{
    username : "SomeUser",
    modules : 
    [
        {
           
                moduleName : "SameName",
                moduleDesc : "moduleDescription"
            
        },
        {
            
                moduleName : "SomeOtherName",
                moduleDesc : "moduleDescription"
            
        }
    ]
}

试过这个,但它对猫鼬没有帮助。

username: 
{
    type: String,
    required: true,
    unique: true,
},
modules: 
[
    {
        moduleName: 
        {
            type: String,
            unique : true, 
            required : true
        }
    }
]

【问题讨论】:

    标签: mongodb mongoose nosql schema mongoose-schema


    【解决方案1】:

    我认为这并不容易,因为 mongodb 不支持子文档上的索引。也许看看这里https://github.com/Automattic/mongoose/issues/2226。例如,他们展示了如何通过模式验证来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-13
      • 2013-04-02
      • 2021-05-30
      • 2020-10-17
      • 2014-05-13
      • 1970-01-01
      相关资源
      最近更新 更多