当前位置: 首页 > 知识库问答 >
问题:

如何在spring boot中基于两个日期从mongoDB获取数据?

仲孙夕
2023-03-14

我在Spring启动中使用聚合。但是得到的响应为空

Aggregation.match(Criteria.where("createdAt").lt(fromDate).gt(toDate));

mongoDbTemplate返回的查询如下

"createdAt" : { "$gt" : { "$date" : "2020-12-31T18:30:00.000Z"} , "$lt" : { "$date" : "2022-01-04T07:34:42.000Z"}}}}

那么,如何使用mongoTemplate从MongoDB获取数据呢。聚合$mongo Shell不支持日期,有什么解决方案吗?

共有2个答案

杜良骏
2023-03-14

尝试了解可以通过函数名称创建的内置方法

@Repository
public interface YourDTORepository extends MongoRepository<YourDTO, YourIdentifier> {
    ArrayList<YourDTO> findByCreatedAtBetween(LocalDateTime from, LocalDateTime to);
}

在期望两个参数之间,它将为您建立范围。

朱越
2023-03-14

你需要使用

Aggregation.match(Criteria.where("createdAt").lt(fromDate)
                                     .and("createdAt").gt(toDate));

或者,

标准类具有和运算符功能。你需要把你的条件传递给他。

query.addCriteria(
    new Criteria().andOperator(
        Criteria.where("createdAt").lt(fromDate),
        Criteria.where("createdAt").gt(toDate)
    )
);

另一个选项是查询注释。

@Query("{'createdat':{$gte:?0,$lte:?1 } }")

这里,?0表示函数的第一个参数,$1表示函数的第二个参数。

参考

 类似资料:
  • 问题内容: 在MySql数据库中有表 我的问题是,我要传递开始日期和结束日期,然后我将获得列日期,例如: 那么我将获得101,102,103 UserId的值。但是我出错了 问题答案: 这可能会更好: 也可能是保留字,对此不太确定。如果是这种情况,则您需要在其周围加反引号(前后应有一个`)

  • 我的桌子有这样的结构 如何在mysql中获取上述数据的两个日期之间的事件(日期比较与年份无关)。例如,如果start_date是2014-05-01,结束日期是2014-05-20,则输出应该是 更新:如果同一个人的结婚日期和出生日期都在提供的日期范围内,则输出应包含该人的两列 (抱歉我的英语不好)

  • 问题内容: 我想要一个开始日期和结束日期之间的日期列表。 结果应为所有日期的列表,包括开始日期和结束日期。 问题答案: 一次添加一天直到达到结束日期: 实现自己的迭代器也可以做到这一点并不难,那就更好了。

  • 问题内容: 我有样本数据 我需要获得Run_Amount的MAX(month),即:2020-06-01-> 15000 需要获取当前月份的cal_amt,即:2020-05-01-> 12000和0.00也与本月相关2020-04-01 我需要这样的输出: 它是示例数据,但还有另外几列我尝试使用 MAX()条件 和 谁能建议我最好的方法 问题答案: 使用window函数获取具有最大月份的的行,然

  • 问题内容: 如何获取JavaScript中两个日期之间的天数?例如,在输入框中指定两个日期: 问题答案: 这是快速的实现,作为解决问题中提出的问题的概念证明。它依赖于这样一个事实,您可以通过减去两个日期来获得两个日期之间经过的毫秒数,这会将它们强制为原始数字值(自1970年初以来的毫秒数)。 您应该注意,“常规”日期API(名称中没有“ UTC”)在用户浏览器的本地时区中运行,因此,如果您的用户所

  • 问题内容: 在我的应用程序中,用户应从选择日期。问题是生成此列​​表。例如,我需要 2010年至2013年 或 6月至8月 之间的所有日期(期间可能是 day , month , year )。是否有任何方法可以获取该数据? 范例:我需要 2013年1月1* 日 至2013年1月1 日之间的日期 * 2013年1月1日 2013年2月1日 2013年3月1日 2013年4月1日 2013年5月1日