如果我想检查日期是否在日期范围之间。我可以做这样的事情。
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
小于或等于给定日期的记录。
答案 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");