Mongo Db 唯一约束问题
Mongo Db Unique Constraint issue
为学校开发 ERP 系统。所以我有 SCHOOL Schema,在其中我引用了 COURSE Schema。我想做的是在 COURSE 模式中有一些字段是独一无二的,比如特定学校的课程名称。但是,如果我在模式本身中将字段标记为唯一,则会导致问题。
一所学校可以开设多门课程,但课程名称对于该学校来说应该是唯一的。但是两个不同的学校可以有同名的课程。例如:- 学校 A 有 btech,所以学校 A 不能有同名的其他课程文件,但学校 B 可以有名为 btech 的课程。
如果我使 course_name 字段在模式本身中是唯一的,我就无法添加 course_name,它已经在其他一些学校中添加了。
我可以通过获取数据库然后逐个检查 course_name 来实现这一点。但我认为这不是理想的解决方案。
请让我知道一些更好的解决方案
我使用 MONGO 数据库。
//SCHOOL SCHEMA
const SchoolSchema =
mongoose.Schema({
course: [{ type:
mongoose.Schema.Types.ObjectId,
ref: 'course'
}]
})
//Course Schema
const CourseSchema =
mongoose.Schema({course_name: {
type: String,
}
为了让数据库对 school
+ course_name
组合强制执行唯一性,两个字段都需要在同一个集合中。
最简单的方法是在课程架构中包含学校名称或 _id。
为学校开发 ERP 系统。所以我有 SCHOOL Schema,在其中我引用了 COURSE Schema。我想做的是在 COURSE 模式中有一些字段是独一无二的,比如特定学校的课程名称。但是,如果我在模式本身中将字段标记为唯一,则会导致问题。
一所学校可以开设多门课程,但课程名称对于该学校来说应该是唯一的。但是两个不同的学校可以有同名的课程。例如:- 学校 A 有 btech,所以学校 A 不能有同名的其他课程文件,但学校 B 可以有名为 btech 的课程。
如果我使 course_name 字段在模式本身中是唯一的,我就无法添加 course_name,它已经在其他一些学校中添加了。
我可以通过获取数据库然后逐个检查 course_name 来实现这一点。但我认为这不是理想的解决方案。
请让我知道一些更好的解决方案
我使用 MONGO 数据库。
//SCHOOL SCHEMA
const SchoolSchema =
mongoose.Schema({
course: [{ type:
mongoose.Schema.Types.ObjectId,
ref: 'course'
}]
})
//Course Schema
const CourseSchema =
mongoose.Schema({course_name: {
type: String,
}
为了让数据库对 school
+ course_name
组合强制执行唯一性,两个字段都需要在同一个集合中。
最简单的方法是在课程架构中包含学校名称或 _id。