简单查询,只查询一个字段:
       db.Q2.find({ "custodian.asOrganizationPartOf" : "放射科" });

  多条件查询,与关系型数据库多条件查询一样:
      db.Q2.find({ "custodian.asOrganizationPartOf" : "放射科", "age" : { "$gt" : 0, "$lt" : 30 }, "sex" : "男", "providerOrganization" : "医大一院" });   150毫秒左右  服务器测试
      其中 "age" : { "$gt" : 0, "$lt" : 30 },是范围查询,0~30之间的数据会被查询出来。
 in查询:
      db.Q2.find({ "age" : { "$in" : [20, 21] }, "providerOrganization" : "医大二院" });

 union all查询:
      db.Q2.find({ "$or" : [{ "age" : { "$in" : [20, 21, 22, 23] } }, { "custodian.wholeOrganization" : "床位号0" }] });
      将符合任意一个条件的数据合并到一起。
  
  利用正则表达式进行模糊查询:
        db.Q2.find({ "custodian.asOrganizationPartOf" : /^门/ });  以门开头  
这种查询必须配合索引使用,否则查询速度会很慢。
  数组查询:
        {array:{$all:["门诊"]}}
  嵌套文档查询
        { "custodian.asOrganizationPartOf" : "放射科" }
 提高查询速度有以下几个方面:
      1.合理建立索引
      2.限定返回结果集
      3.按照业务合理规划集合,类似数据库分表方案,将业务拆分到多个集合中。

10-10 01:47