MongoDB中关于Criteria的各种查询实例(is、in、regex、gte、lte、elemMatch)

例如:实体中有一集合,包含三个元素,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;
    }
}
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值