mongo使用小记0之Query和Criteria查询语句

1,查询列值最大

Query query = new Query();
query.addCriteria(Criteria.where("phoneOrEmail").is(phoneNum));
query.with(new Sort(Direction.DESC, "expiry"));
VerificationCode verificationCode = mongoTemplate.findOne(query, VerificationCode.class);

2,多条件查询

	public Page list(EventFilter eventFilter, Integer page) {

        Criteria criteria = new Criteria();
        if (!StringUtils.isEmpty(eventFilter.getTimeFuture()) && !StringUtils.isEmpty(eventFilter.getTimeFuture()))
            criteria.and("startTime").gt(eventFilter.getTimePast()).and("endTime").lt(eventFilter.getTimeFuture());
        if (eventFilter.getLocation() != null && !StringUtils.isEmpty(eventFilter.getLocation().getCity()))
            criteria.and("location.city").is(eventFilter.getLocation().getCity());
        if (!StringUtils.isEmpty(eventFilter.getPriceType())) {
            if (eventFilter.getPriceType().equals(FOR_FREE))
                criteria.and(PRICE).is(0);
            if (eventFilter.getPriceType().equals(CHARGE))
                criteria.and(PRICE).gt(0);
        }
        Query query = new Query(criteria);
        Long amount = mongoTemplate.count(query, Event.class);
        query.with(new Sort(Direction.DESC, "popular"));
        query.with(PageRequest.of(page, GLOBAL_PAGE_SIZE));
        List<Event> list = mongoTemplate.find(query, Event.class);
        return new PageImpl<>(list, PageRequest.of(page, GLOBAL_PAGE_SIZE), amount);
    }

3,不可以这样:

criteria.and("startTime").lt(15);
criteria.and("startTime").gt(10);

可以这样:

criteria.andOperator(Criteria.where("averagePrice").gte(min), Criteria.where("averagePrice").lte(max));

4,使用mongo compass连接数据库管理数据时,如果要添加long型时间,但mongo compass并没有long型可以选择,此时,可以用命令行插入数据:

db.event.insert({"name":"test","startTime":NumberLong(12),"endTime":NumberLong(13)})
long is Int64 in .NET; it is just an alias in C#.

好吧,我承认,long型就是int64型。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值