node.js - 如何使用 mongoose 定义单个引用模式

标签 node.js mongodb mongoose

我是node.jsmongodb的新手,如下面的代码所示,我在部门表员工中定义了一个引用,但在这里当我插入或从员工表中获取数据时,我总是得到数组格式,但我想将引用定义为单列而不是多个

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 数组(我知道这不是您想要做的)。

要引用 employeedepartment 文档,您可以使用类似以下内容的内容:

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
    }
});

This answer might be helpful in understanding what I mean.

关于node.js - 如何使用 mongoose 定义单个引用模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445667/

相关文章:

node.js - 启动 Node docker 容器以从 VS Code 进行调试

c# - 如何通过聚合从 mongo 集合中过滤 datetime.Month ?

javascript - 创建钩子(Hook)后

node.js - 从数组中的数组中提取

node.js - Sails JS 模型 Rest API

mongodb - MongoDB 聚合 $project 是否会减少内存中保存的数据量?

mongodb - 条件总和 mongodb 聚合

javascript - 无法将存储的密码作为参数发送给comparepassword()方法 Node js

javascript - 在 vue js 中基于 Web 的 html 脚本中导入 js 文件时出现 CORS 错误

json - 查询 API 时,我在传递给 "Assertion failed: You must include an ` 的哈希中得到 `push` id`