【问题标题】:How to order by date and make a query in multiple documents in mongodb如何按日期排序并在mongodb中的多个文档中进行查询
【发布时间】:2014-09-26 13:49:08
【问题描述】:

我有这些文件: 药物、治疗、prontuarys 和医疗记录。 所有这些文档都有一个用户 id 字段,我用来查询,我的问题是我需要查询所有这些并按日期 desc 对查询进行排序以制作患者病史,我该如何在 mongodb 上做到这一点?

【问题讨论】:

    标签: php mongodb


    【解决方案1】:

    MongoDB 不支持 JOIN。尝试使用 JOIN 会破坏 mongoDB 的目的。

    1. 您可以使用DBref 并编写您的应用程序代码,以便它自动为您获取这些引用。
    2. 您可以更改架构并使用embedded documents
    3. 您必须自己决定让事情保持现在的样子并执行两个查询。

    示例:

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

    【讨论】:

    • 感谢您对 Rajesh 的称赞,但是我该如何实现 DBref?,我真的迷路了,我是新使用 mongodb,但我喜欢它,你能更具体一点吗? ,我所有的表都有 userID 字段。我如何使用 DBref 订购?,谢谢。
    【解决方案2】:

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

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

    现在你的数据大多是只读的,你几乎不会更新现有数据,你只会添加数据,其余时间查询它。这将非常快,因为所有信息都保存在同一位置。获得所有记录后,您可以在 php 中进行排序,这样会更快。

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 1970-01-01
      • 2016-04-10
      • 2017-01-12
      • 2012-11-30
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 2014-08-14
      相关资源
      最近更新 更多