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

标签 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 小于或等于给定日期的记录。

最佳答案

添加这应该可以:

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");

关于java - Spring Data MongoDB 检查字段是否存在然后查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36861787/

相关文章:

java - 相当于 BitSet 的 list.size() 是什么?

java - 找出 System.out.printf 将打印出多少字符(通常)的简单方法

java - JpaRepository findAll() 正在获取嵌套对象

spring-data - 日期之间的 MongoRepository 查询

java - Eclipse 在哪里存储首选项?

java - 使用java加载串口共享库出错

java - Spring Data REST - POST 方法未调用 RepositoryEventHandler 方法?

java - 如何在Spring数据elasticsearch中映射嵌套对象列表

performance - MongoDB 按 ID 慢查询

java - Mongodb 在使用 spring 数据 jpa 插入时强制索引存在