mongodb - Spring Boot MongoDb 仅按时间过滤
问题描述
实际上,我将约会存储在 MongoDB 集合中。每个约会都有开始和结束日期。
例子:startDate: 2021-03-02T06:00:00.000+00:00, endDate: 2021-03-02T07:00:00.000+00:00
实际上我有一个小框架,它能够为我创建一个复杂的标准来过滤其他属性的约会。我想继续使用它。该框架根据 GET API 的请求参数创建标准列表。最后,它将所有标准与 AND 操作结合起来。
实际上,我们可以通过以下方式获得两个日期之间的所有约会:
/**
* The appointment is scheduled after the given time.
*
* @param time
* @return
*/
public AppointmentFilter scheduledAfter(OffsetDateTime time) {
Preconditions.checkNotNull(time);
return this.addCriteria(new Criteria().orOperator( //
Criteria.where("startDate").gte(time), //
Criteria.where("endDate").gt(time)));
}
/**
* The appointment is scheduled before the given time.
*
* @param time
* @return
*/
public AppointmentFilter scheduledBefore(OffsetDateTime time) {
Preconditions.checkNotNull(time);
return this.addCriteria(new Criteria().orOperator( //
Criteria.where("startDate").lte(time), //
Criteria.where("endDate").lt(time)));
}
实际上,我们还必须提供按时间段缩小返回的约会列表的可能性。
这意味着我必须获得计划在 09:00 和 10:00之间的两个日期(通过上述方法)之间的所有约会。
为此,我必须创建一个标准,它只考虑存储约会的开始和结束日期的时间(小时、分钟、秒等)。
我通过聚合发现了某种极其复杂的解决方案,但框架不支持聚合(还)。虽然我能够单独汇总开始和结束日期的小时、分钟等,但所需的标准将非常复杂。
是否有任何其他方法可以创建Criteria
仅考虑日期时间的(如上所述)?
我想java.time.OffsetTime
用作他们的输入。那将是合理的输入。
非常感谢您的帮助,祝您有美好的一天!
解决方案
推荐阅读
- javascript - 正则表达式只允许有效句子,不允许所有数字、所有空格和所有特殊字符
- sql - 将 CASE WHEN 添加到 WHERE 子句
- javascript - 过滤数据时更改按钮颜色
- angular - (如何)我可以从 NgbModal 模态调用父组件函数吗?
- javascript - 改进 Wordpress 网站上的一项功能,该功能根据用户的 IP 地址更改标题中显示给用户的电话号码
- java - Thymeleaf 找不到索引模板
- c# - 如何从 .net core 2.1 中的另一个程序集加载 MEF 组件
- sql - 如何列出表的索引及其对应的列?
- wordpress - 重力形式 - 自定义进度条?
- wordpress - 无法接收 Wordpress 表单