本文分享了如何通过mongoose的种群实现关联表查询,种群API可以参考这里。本文demo源码。1.初始化两个schema和model。/***部门架构**/vardepartmentSchema=newSchema({id:String,//部门编号名称:String//name});/***员工架构**/varemployeeSchema=newSchema({id:Number,//工号name:String,//namesex:Number,//性别age:Number,//agedep:{type:Schema.Types.ObjectId,ref:'department'}});/***模型**/varemployee=mongodb.mongoose.model("employee",employeeSchema);vardepartment=mongodb.mongoose.model('部门',departmentSchema);employee的属性dep,对应modeldepartment。ref表示协会部门模型。关联模型的类型必须是ObjectId、Number、String和Buffer.2。初始化数据。//部门表db.departments.insert({"id":"1001","name":"市场部"});db.departments.insert({"id":"1002","name":"销售部"});db.departments.insert({"id":"1003","name":"行政部"});//员工表db.employees.insert({"id":"001","name":"jack","sex":1,"age":23,"dep":"593667c4ec59b38aefdc25b5"});db.employees.insert({"id":"002","name":"tom","sex":2,"age":23,"dep":"593667c4ec59b38aefdc25b6"});db.employees.insert({"id":"003","name":"kan","sex":1,"age":43,"dep":"593667c4ec59b38aefdc25b5"});db.employees.insert({"id":"004","name":"julis","sex":2,"age":23,"dep":"593667c4ec59b38aefdc25b7"});db.employees.insert({"id":"005","name":"michael","sex":1,"age":43,"dep":"593667c4ec59b38aefdc25b5"});db.employees.insert({"id":"006","name":"jordan","sex":1,"age":25,"dep":"593667c4ec59b38aefdc25b5"});注意这里数据初始化的顺序。必须先初始化部门表,然后再初始化员工表。3.使用人口关联查询employee.find({})//查询employees表中的所有数据,并将结果返回给populate.populate({path:'dep',select:{name:1}})//上面结果集中的dep字段填充的是departments表中的name字段。exec(函数(err,obj){回调(err,obj);});3、查询结果展示渲染模板(ejs语法)及渲染语句:res.render('list',{employeeList:obj});//obj为第三部分查询结果 <%for(vari=0;i工号 姓名 性别 年龄 部门 <%}%><%=employeeList[i]._doc。我d%> <%=employeeList[i]._doc.name%> <%if(employeeList[i]._doc.sex==1){%>男<%}else{%>男<%}%> <%=employeeList[i]._doc.age%> <%=employeeList[i]._doc.部门名称%>
