Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于日期间匹配的Spring数据MongoDB聚合_Java_Spring_Mongodb_Spring Data Mongodb - Fatal编程技术网

Java 用于日期间匹配的Spring数据MongoDB聚合

Java 用于日期间匹配的Spring数据MongoDB聚合,java,spring,mongodb,spring-data-mongodb,Java,Spring,Mongodb,Spring Data Mongodb,我不熟悉Spring数据MongoDB和MongoDB。 如何使用聚合Spring Data MongoDB获取文档的所有脱机条目 如果条目处于联机状态,则“onlineFrom”和“onlineTo”字段将填入开始日期和结束日期。 currentDate是java的“新日期;”。 如果条目尚未联机,则onlineTo和onlineFrom字段不存在,这意味着它处于脱机状态 示例条目: {name:'Foo'}, //offline {name:'Bar', onlineFrom:'aStart

我不熟悉Spring数据MongoDB和MongoDB。 如何使用聚合Spring Data MongoDB获取文档的所有脱机条目

如果条目处于联机状态,则“onlineFrom”和“onlineTo”字段将填入开始日期和结束日期。 currentDate是java的“新日期;”。 如果条目尚未联机,则onlineTo和onlineFrom字段不存在,这意味着它处于脱机状态

示例条目:

{name:'Foo'}, //offline
{name:'Bar', onlineFrom:'aStartDate', onlineTo:'aEndDate'} //online if currentDate between, otherwise offline
我试过很多标准,比如

Aggregation.match(Criteria.where("onlineFrom").gt(currentDate).and("onlineTo").lt(currentDate)
                    .orOperator(Criteria.where("onlineFrom").exists(false).and("onlineTo").exists(false)))
没有成功

编辑:

我是这样解决的:

Aggregation.match(new Criteria().orOperator(Criteria.where("onlineFrom").exists(false),
                    Criteria.where("onlineTo").exists(false),
                    Criteria.where("onlineFrom").gt(currentDate).and("onlineTo").lt(currentDate)))

你是如何保存日期的?可能不起作用,因为数据库中的日期格式与查询中的日期格式不同。进行日期比较最简单的方法是在数据库中保存毫秒。我认为Spring数据会处理日期。Spring数据使用的类使用java.util.Date类型作为字段。此日期保存为MongoDB中的ISODate“…”。