我是node.js和mongodb的新手,如下面的代码所示,我在部门表员工中定义了一个引用,但在这里当我插入或从员工表中获取数据时,我总是得到数组格式,但我想将引用定义为单列而不是多个。
var employee = new mongoose.Schema({
name: String,
dept: [department]
});
var department = new mongoose.Schema({
dept_name : String,
dept_code : String
})
我想要从员工表中获取格式为 `{"name":"CS",dept:{"id":_id_of_dept}} 的数据
请指导我实现目标的正确方法。
最佳答案
您只能使用引用或数组进行嵌套,因此在本示例中,您可以创建一个 department
记录并在 employee
文档中引用该记录,或者为 employee
创建一个 department
数组(我知道这不是您想要做的)。
要引用 employee
的 department
文档,您可以使用类似以下内容的内容:
var department = new mongoose.Schema({
dept_name : String,
dept_code : String
});
mongoose.model('Department', department);
var employee = new mongoose.Schema({
name: String,
dept: { type: Schema.Types.ObjectId, ref: 'Department' }
});
但是,那么您需要 populate当查询您的员工
以收集部门
数据时。
但从较高的层面来看,看看您想要完成的任务,我建议直接将department
存储在employee
文档中。关系数据库通常可能会出现如上所述的模式,但在基于文档的数据库中,确实没有充分的理由将部门
与员工
分开。执行类似我在下面所做的操作将有助于您将来查询和一般访问数据:
var employee = new mongoose.Schema({
name: String,
dept: {
dept_name : String,
dept_code : String
}
});
关于node.js - 如何使用 mongoose 定义单个引用模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445667/