一、前言
一般使用mongodb存储非结构化数据,因此,除了常见的数字类型、String等外,还有数组等复杂格式。查询方式有常见对象/数组等查询、aggregate聚合查询,下面将具体介绍各类查询。
二、对象、数组等的查询
elemMatch操作符用于查询数组中满足特定条件的元素。默认情况下,多条件查询一个数组。文档内的数组一个元素满足所有条件,也可以是每个元素只满足一部分条件但加起来满足所有条件。使用$elemMatch操作符表示要求数组中至少一个元素满足所有条件。
2.1、代码实现示例
/**
* 基本的查询,针对各种对象、数据结构类型,find()查询方式
* @param param
* @return
*/
public Object baseQuery(KnowledgeVo param){
Criteria criteria = new Criteria();
criteria.and("tenantsid").is(563651117638208L);
//模糊匹配
// Pattern pattern = Pattern.compile("^.*" + param.getKnowledgeName() + ".*$", Pattern.CASE_INSENSITIVE);
// criteria.and("knowledge_name").is(pattern);
//范围查询
if(StringUtils.isBlank(param.getQueryStartTime()) && StringUtils.isNotBlank(param.getQueryEndTime())){
criteria.and("update_time").lte(TimeUtil.parseDatetime(param.getQueryEndTime()));
}
if(StringUtils.isNotBlank(param.getQueryStartTime()) && StringUtils.isBlank(param.getQueryEndTime())){
criteria.and("update_time").gte(TimeUtil.parseDatetime(param.getQueryStartTime()));
}