【问题标题】:Mongo Db Unique Constraint issueMongodb唯一约束问题
【发布时间】:2022-01-05 14:11:02
【问题描述】:

为学校开发 ERP 系统。所以我有 SCHOOL Schema,在里面我引用了 COURSE Schema。我想做的是在 COURSE 模式中设置一些独特的字段,例如特定学校内的课程名称。但是,如果我在架构本身中将字段标记为唯一,则会导致问题。

一所学校可以开设多门课程,但该特定学校的课程名称应该是唯一的。但是两所不同的学校可以有同名的课程。例如:- 学校 A 有 btech,所以学校 A 不能有其他同名的课程文件,但学校 B 可以有名称为 btech 的课程。

如果我使 course_name 字段在架构本身中唯一,我无法添加已经在其他学校添加的 course_name。

我可以通过获取数据库然后逐一检查 course_name 来实现这一点。但我认为这不是理想的解决方案。

请告诉我一些更好的解决方案

我使用 MONGO DB。

//SCHOOL SCHEMA
const SchoolSchema = 
mongoose.Schema({
 course: [{ type:
 mongoose.Schema.Types.ObjectId,
    ref: 'course'
 }]
})

//Course Schema
const CourseSchema = 
 mongoose.Schema({course_name: {
    type: String,
}

【问题讨论】:

    标签: database mongodb mongoose nosql schema


    【解决方案1】:

    为了让数据库对 school + course_name 组合强制唯一性,这两个字段需要在同一个集合中。

    最简单的方法是在课程架构中包含学校名称或 _id。

    【讨论】:

    • 我已在课程架构中添加了 school_name,但不知道下一步该做什么。请在课程架构中添加学校名称后提供更多详细信息。
    • stackoverflow.com/questions/35920733/… 讨论使用选项创建复合索引 - 这有帮助吗?
    • 是的,确实如此。
    猜你喜欢
    • 2012-09-02
    • 2011-02-17
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多