嗨,我是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应用程序中为我提供正确的架构和查询以实现此目的。
答案 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
});