Mongo DB从两个不同的Schema(服务)查询

时间:2015-07-23 05:55:45

标签: node.js mongodb mongoose mongodb-query

我通过Node.Js在我的localhost中运行了两个模式。假设这两项服务是员工和员工薪酬。

  localhost/emp
  var EmpSchema = mongoose.Schema({

     Emp_ID : Number,
     Emp_Email_ID : String,
     Emp_First_Name : String,
     Emp_Last_Name : String,

   });

   localhost/empsalary

      var EmpSalarySchema = mongoose.Schema({

      Emp_ID : Number,
      Emp_Monthly_Salary : Number,
      Emp_Annual_Salary : Number
     Emp_Loan_Detail : String,

     });

我如何在获取方法中进行查询,以便获得Emp_Monthly_Salary和Emp_First_Name

1 个答案:

答案 0 :(得分:2)

MongoDb是一个NoSQL数据库,它的一个限制是它不允许在一个查询中直接在集合之间创建JOIN。

解决此限制的典型方法:

  • 查询一个集合并使用mongoose"填充"将其他集合中的数据添加到结果集的功能:http://mongoosejs.com/docs/populate.html(可能是您问题的首选解决方案)

  • 重新构建您的数据,使其更符合您的典型查询(通常:允许一些冗余),因此如果您总是一起查询firstname和salary,您可能希望使用子文档将它们存储在一起:{{ 3}}

  • 只使用两个查询并在node.js代码中手动执行JOIN

  • 如果您的数据和查询确实需要大量的JOIN(非常关系),那么mongo可能不是您问题的正确选择(http://mongoosejs.com/docs/subdocs.html