【问题标题】:Mongo DB querying from two different Schema(Services)从两个不同的模式(服务)查询 Mongo DB
【发布时间】:2015-07-23 14:09:40
【问题描述】:

我有两个通过 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

【问题讨论】:

  • 那么,到目前为止,您尝试了什么?您可能想阅读How do I ask a good question,它提高了大幅获得有用答案的可能性。您可能会发现 ESR 的优秀文章 How To s The Smart Way 也很有帮助。
  • 我对 mongo DB 和非关系数据库非常陌生。所以尝试一下

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

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

绕过此限制的典型方法:

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

  • 重塑您的数据,使其更适合您的典型查询(并且通常:允许一些冗余),因此如果您总是一起查询名字和薪水,您可能希望使用子文档将它们存储在一起:@987654322 @

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

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

【讨论】:

  • 如果答案正确且有帮助,请考虑接受,否则请评论您遗漏的内容,以便我们提供帮助
猜你喜欢
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
相关资源
最近更新 更多