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型。

发布了29 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u012803274/article/details/80216044