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


How to order by date and make a query in multiple documents in mongodb

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

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

  1. 您可以使用DBref并编写应用程序代码,以便它自动为您获取这些引用
  2. 您可以更改模式并使用嵌入式文档
  3. 你必须决定让事情保持原样,并做两个查询

示例:

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的历史记录。您将有一个名为Patient的集合,其余信息将是嵌入文档,例如

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

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