Spring Data MongoDB检查字段是否存在然后查询

时间:2016-04-26 10:08:50

标签: java spring-data spring-data-mongodb

如果我想检查日期是否在日期范围之间。我可以做这样的事情。

Query query = new Query();
query.addCriteria(new Criteria().andOperator(Criteria.where("effectiveFrom").lte(date),
       Criteria.where("validTill").gte(date)));
return mongoTemplate.find(query, DocumentClass.class, "DocumentName");

但是假设validTill在某些情况下确实存在,那么最方便的方法是什么。所以它应该像检查validTill是否存在然后比较日期范围内的给定日期,否则只需找到effectiveFrom小于或等于给定日期的记录。

2 个答案:

答案 0 :(得分:0)

您可以尝试在查询中使用orOperator,指定您在问题中的条件。一个将包含您已有的日期和其他日期

Criteria.where("effectiveFrom").lte(date),Criteria.where("validTill").exists(false))

这至少可以确保您不会丢失任何数据。

答案 1 :(得分:0)

添加此项应该可以:

Query query = new Query();
query.addCriteria(Criteria.where("validTill").exists(true));
query.addCriteria(new Criteria().andOperator(Criteria.where("effectiveFrom").lte(date),
       Criteria.where("validTill").gte(date)));
return mongoTemplate.find(query, DocumentClass.class, "DocumentName");