MongoDB中关于Criteria的各种查询实例(is、in、regex、gte、lte、elemMatch)
2018-02-27 09:50
495 查看
例如:实体中有一集合,包含三个元素,A、B、C,实现至少含有其中一个元素就可以查询到此实体的时候就需要使用elemMatch来进行查询
package cn.com.qiyitech.qiyibiz.model.item; import cn.com.qiyitech.pfw.entity.PlatformAsset; import cn.com.qiyitech.pfw.model.PlatformBaseFilter; import cn.com.qiyitech.qiyibiz.entity.Item; import cn.com.qiyitech.qiyibiz.entity.ItemFabric; import cn.com.qiyitech.qiyibiz.entity.ItemOrder; import cn.com.qiyitech.qiyibiz.entity.Shop; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import org.springframework.data.mongodb.core.query.Criteria; import java.util.Set; @Setter @Getter public class ItemListFilter extends PlatformBaseFilter { @ApiModelProperty(value = "商品名称") private String name; @ApiModelProperty(value = "所属店铺ID") private Set<String> owner; @ApiModelProperty(value = "幅宽最大值") private Integer maxWidthCloth; @ApiModelProperty(value = "幅宽最小值") private Integer minWidthCloth; @ApiModelProperty(value = "克重单位") private String weightUnit; @ApiModelProperty(value = "产品规格") private String[] specification; @Override public Criteria genCriteria() { Criteria criteria = new Criteria(); if (specification != null && specification.length > 0) criteria = criteria.and(Item.FIELD_SPECIFICATION).elemMatch(new Criteria().in(specification)); if (owner != null) criteria = criteria.and(PlatformAsset.FIELD_OWNER).in(owner); if (name != null) criteria = criteria.and(PlatformAsset.FIELD_NAME).regex(".*" + name + ".*"); if (minWidthCloth != null || maxWidthCloth != null) { if (minWidthCloth == null) { minWidthCloth = 0; } if (maxWidthCloth == null) { maxWidthCloth = Integer.MAX_VALUE; } criteria = criteria.and(Item.FIELD_WIDTH_CLOTH).gte(minWidthCloth).lte(maxWidthCloth); } if (weightUnit != null) criteria = criteria.and(Item.FIELD_WEIGHT_UNIT).is(weightUnit); return criteria; } }
相关文章推荐
- 关于The method setMapperClass(Class<? extends Mapper>) in the type Job is not applicable for the argum
- [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“
- 关于查询oracle in >1000 的讨论
- MongoDB小结14 - find【查询条件$lt $lte $gt $gte】
- 关于mongodb '$in' 查询无序问题
- 关于mybatis xml中用in、start with查询数据代码片段
- 关于误更改/var下诺干的权限问题,导致系统启动提示The System is running in low-graphics mode问题解决 By ACReaper
- 关于OPENCV The node is neither a map nor an empty collection in function cvGetFileNodeByName
- 一个关于使用OIT表进行查询优化的实例
- MongoDB之DBref(关联插入,查询,删除) 实例深入
- java 中 mongodb的各种操作 模糊查询 精确查询 等等
- mongodb关于时间date的查询——Querying for a Date Range
- 如何查询其他数据库内的表(IN子句实例)?
- 关于< tbody >的一个实例,很实用。
- 打包JPA动态查询(CriteriaQuery) eq、ge、gt
- 关于学生成绩的sql server 查询操作 经典实用实例
- mongodb 内嵌文档多条件查询($elemMatch)
- 让mongoDB也能使用in查询,提高查询速度
- 让mongoDB也能使用in查询,提高查询速度
- 安卓编译 translate error Lint: How to ignore “<key> is not translated in <language>” errors?