简单查询,只查询一个字段:
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.按照业务合理规划集合,类似数据库分表方案,将业务拆分到多个集合中。