【发布时间】:2014-09-26 13:49:08
【问题描述】:
我有这些文件: 药物、治疗、prontuarys 和医疗记录。 所有这些文档都有一个用户 id 字段,我用来查询,我的问题是我需要查询所有这些并按日期 desc 对查询进行排序以制作患者病史,我该如何在 mongodb 上做到这一点?
【问题讨论】:
我有这些文件: 药物、治疗、prontuarys 和医疗记录。 所有这些文档都有一个用户 id 字段,我用来查询,我的问题是我需要查询所有这些并按日期 desc 对查询进行排序以制作患者病史,我该如何在 mongodb 上做到这一点?
【问题讨论】:
MongoDB 不支持 JOIN。尝试使用 JOIN 会破坏 mongoDB 的目的。
示例:
var myCursor = db.users.find({email:'xyz@example.com'});
var userres = myCursor.hasNext() ? myCursor.next() : null;
db.posts.find({uid : userres._id});
【讨论】:
mongodb 对保存数据和获取数据的方式有完全不同的思考方式。现在让我们考虑您在 RDBMS 系统中的模式。您将保留 6 个表,其中一个表用于用户详细信息。在获取患者的历史记录时,您需要连接所有具有性能损失的表,并且必须连接和搜索索引。因此,现在在 mongodb 中,您的要求是在搜索时显示患者的历史记录。您将拥有一个名为 Patient 的集合,其余信息将是嵌入文档示例
{
_id : OBJECTID,
PersonalData : {Name : "Hello", DateOfJoining : Date},
Meds : [{Date : ""} , {Date : {}}],
Treatment : [{Date : "" , Type : ""}],
MedicalRecords : [{} , {}]
}
现在你的数据大多是只读的,你几乎不会更新现有数据,你只会添加数据,其余时间查询它。这将非常快,因为所有信息都保存在同一位置。获得所有记录后,您可以在 php 中进行排序,这样会更快。
【讨论】: