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