从两个不同的模式(服务)查询mongodb



我有两个schema通过Node.Js在我的本地主机上运行。假设这两个服务是Employee和Employee Salary。

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

我如何需要查询get方法这样我得到Emp_Monthly_Salary和Emp_First_Name

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

绕过此限制的典型方法:
  • 查询一个集合,并使用猫鼬"填充"功能从其他集合添加数据到结果集:http://mongoosejs.com/docs/populate.html(可能是您的问题的首选解决方案)

  • 重塑你的数据,使其更适合你的典型查询(通常:允许一些冗余),所以如果你总是查询名字和工资在一起,你可能想要存储在一起使用子文档:http://mongoosejs.com/docs/subdocs.html

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

  • 如果您的数据和您的查询确实需要大量的join(非常相关),mongo可能不是您问题的正确选择(http://docs.mongodb.org/manual/faq/fundamentals/)