如何按日期排序并在mongodb中的多个文档中进行查询

时间:2014-09-26 03:58:05

标签: php mongodb

我有这些文件: 药物,治疗,prontuarys和医疗记录。 所有这些文件都有一个用户ID字段,我用来查询,我的问题是我需要查询所有这些并按日期desc命令查询以创建患者的病史,我怎么能在mongodb上这样做?

2 个答案:

答案 0 :(得分:0)

MongoDB不支持JOIN.Trying使用JOIN会破坏mongoDB的目的。

  1. 您可以使用DBref并编写应用程序代码,以便自动为您提取这些引用。
  2. 您可以更改架构并使用embedded documents
  3. 你必须决定自己完全按照现在的方式保留事情并做两个问题。
  4. 示例:

    var myCursor = db.users.find({email:'xyz@example.com'});
    var userres = myCursor.hasNext() ? myCursor.next() : null;
    db.posts.find({uid : userres._id});
    

答案 1 :(得分:0)

mongodb有完全不同的思维方式来保存数据和获取。现在让我们考虑一下RDBMS系统中的模式。您将保留6个表,包括一个用户详细信息表。在获取患者的病史时,您需要加入所有具有性能损失和索引的表,并且必须加入和搜索。所以现在在mongodb中,您的要求是在搜索时显示患者的病史。您将拥有一个名为Patient的集合,其余信息将是嵌入式文档示例

                {
                  _id : OBJECTID,
                   PersonalData : {Name : "Hello", DateOfJoining : Date},
                   Meds : [{Date : ""} , {Date : {}}],
                   Treatment : [{Date : "" , Type : ""}],
                   MedicalRecords : [{} , {}]
                } 

现在你的数据主要是readonly,你几乎不会更新现有的数据,你只会添加数据,其余的时间查询它。由于所有信息都保存在同一位置,因此速度非常快。一旦你获得了所有的记录,你可以在php中排序,这将更快。