为mongoose和node.js创建引用文档模式

时间:2016-11-15 17:30:07

标签: node.js mongodb

嗨,我是mongodb的新手我正在学习它并实现我的一个使用node.js的爱好项目,请帮我一个架构和查询来做下面的项目。

我有一家医院,每次患者的详细信息都是在他第一次就诊时登记的,每次就诊时我需要通过参考来为该患者添加一次访问。

var patientschema=mongoose.schema(
                   {
                      objectid:"12345678"
                      patientname: string,
                      patientDOB:Date,
                      Gender:string,
                      registrationfee:number,
                      visits:[{objectid:1234},{objectid:5678}]
                   });

并且访问架构就像

var visitschema = mongoose.schema({
                                   objectid:"1234",
                                   patientid:"12345678"
                                   visitdate:date,
                                   reason:string,
                                   consultingdoctor:string
                                   consultingfee:number                      
                                  }); 

请从node.js应用程序中为我提供正确的架构和查询以实现此目的。

1 个答案:

答案 0 :(得分:0)

在您的情况下,两个模式应该如下所示。

var patientschema=mongoose.schema(
{
  patientname: string,
  patientDOB:Date,
  Gender:string,
  registrationfee:number,
  visits:[{ type: mongoose.Schema.Types.ObjectId, ref: 'Visit' }]
});

var visitschema = mongoose.schema(
{
   patientid:{ type: mongoose.Schema.Types.ObjectId, ref: 'Patient' }
   visitdate:date,
   reason:string,
   consultingdoctor:string
   consultingfee:number                      
}); 

var Visit  = mongoose.model('Visit', visitschema);
var Patient = mongoose.model('Patient', patientschema);

现在让我们创建新的患者入口:

var p1 = new Patient({name: 'Some Name', patientDOB : '2016-11-11', Gender : 'male', registrationfee : 123});

现在您可以为此患者添加访问次数。

var v1 = new Visit({patientid : p1._id, ... Fill Other Fields here });

现在保存这次访问时,那将会变得有趣

v1.save(function(err, res){

});

Mongoose会在内部将v1的ID附加到您的患者Visits Array。您可以稍后搜索它们。

Patient.find().populate('visits').exec(function(err, res){
    // Here the P1 with have array of Visits
});