我是 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}}
请指导我实现目标的正确方法。
答案 0 :(得分:0)
您只能使用引用或数组进行嵌套,因此在此示例中,您可以创建department
记录并在employee
文档中引用该记录,或者使用department
数组s为employee
(我理解的不是你想要做的)。
要引用department
中的employee
文档,您可以使用以下内容:
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' }
});
但是,在查询employee
以收集department
数据时,您需要populate。
但是从较高的层面来看,考虑到您要完成的工作,我建议您直接将department
存储在employee
文档中。关系数据库通常最终会出现上述类似的模式,但在基于文档的数据库中,将department
与employee
区分开来并不是一个好理由。做一些像我以下所做的事情将来会帮助您查询和一般访问数据:
var employee = new mongoose.Schema({
name: String,
dept: {
dept_name : String,
dept_code : String
}
});