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

在今天的日期之前使用Spring数据查找@Mongorepository中的Query或Mongo操作性或mongoplate

慎旭尧
2023-03-14

我正在尝试使用mongorepository或mongooperations或mongotemplate从mongodb中获取今天创建的所有记录。我只想按日期匹配所有记录,而不是按时间戳匹配。请参考下面我的mongodb条目。

/* 1 */
{
"_id" : ObjectId("59135f13fc90f22b00c91df2"),
"_class" : "com.vistors.management.domains.EmployeeVisitor",
"checkedIn" : true,
"checkedInDate" : ISODate("2017-05-10T18:42:27.630Z"),
"visitor" : {
    "$ref" : "VISITOR",
    "$id" : ObjectId("59135f13fc90f22b00c91def")
},
"employee" : {
    "$ref" : "EMPLOYEE",
    "$id" : ObjectId("59135f13fc90f22b00c91df0")
}
}

/* 2 */
{
"_id" : ObjectId("59135f13fc90f22b00c91df3"),
"_class" : "com.vistors.management.domains.EmployeeVisitor",
"checkedIn" : true,
"checkedInDate" : ISODate("2017-05-10T18:42:27.638Z"),
"visitor" : {
    "$ref" : "VISITOR",
    "$id" : ObjectId("59135f13fc90f22b00c91dee")
},
"employee" : {
    "$ref" : "EMPLOYEE",
    "$id" : ObjectId("59135f13fc90f22b00c91df0")
}
}

/* 3 */
{
"_id" : ObjectId("5913ec9eafeb7a1e8df79d5f"),
"_class" : "com.vistors.management.domains.EmployeeVisitor",
"checkedIn" : true,
"checkedInDate" : ISODate("2017-05-11T04:46:22.425Z"),
"visitor" : {
    "$ref" : "VISITOR",
    "$id" : ObjectId("59135f13fc90f22b00c91dee")
},
"employee" : {
    "$ref" : "EMPLOYEE",
    "$id" : ObjectId("59135f13fc90f22b00c91df0")
}
}

我想从db中获取所有与check edInDate匹配的企业作为今天的日期,例如:

@Query("{'checkedInDate': {$gte: ?0, $lte:?0 }}")
List<EmployeeVisitor> findAllCheckedInToday(ZonedDateTime date)

@Override
public List<EmployeeVisitor> getTodayRecords() {

//Date date = Date.from(instant);

    Query query = new Query().addCriteria(Criteria.where("checkedInDate").is(new Date()));
    return mongoTemplate.find(query, EmployeeVisitor.class);

    //Criteria.where("expenseDate").gte(calendar1.getTime()).lte(calendar2.getTime()).and("userid").is(uid);}
}

但我没有达到要求的结果,我无法理解如何从数据库中查询日期而不是带有时间戳的日期。

谢谢你的帮助。

吉滕德

共有2个答案

司徒骞尧
2023-03-14

您可以将存储库方法更改为以下内容:

List<EmployeeVisitor> findByCheckedInDate(ZonedDateTime date)
松俊才
2023-03-14

继续@Veeram的建议。这就是你能做的,

ZonedDateTime today = ZonedDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT, ZoneId.systemDefault());
ZonedDateTime tomorrow = today.plusDays(1);  
repository.finByCheckedInDateBetween(Date.from(today.toInstant()), Date.from(tomorrow.toInstant()));  

您可以将存储库方法更改为以下内容

finByCheckedInDateBetween(Date from, Date to)
 类似资料:
  • 看看有没有人能帮上忙。 我想使用Spring数据mongodb的存储库,我想使用查询注释来过滤按值A=10或A=20查找的数据 很明显,“试着做一个AND,我需要一个OR。 有什么想法吗?

  • 问题内容: 我已经编写了一些代码来检查两个日期,即开始日期和结束日期。如果结束日期早于开始日期,则会提示您结束日期早于开始日期。 我还想添加检查开始日期是否在今天之前(今天和用户使用该应用程序的那天一样)。(下面的日期检查器代码,如果有任何影响,那么所有这些都为Android编写) 问题答案: 这有帮助吗?

  • 查找两个日期之间的月数的简单方法是=DATEDIF(DATE1; DATE2;"m"),其中DATE2必须大于DATE1。 我试图实现的是找到今天和未来日期之间的月份数。我希望=DATEDIF(MONTH(TODAY()); DATE2;"m")可以工作,但这会返回一个奇怪的结果(参见示例)。 =日期(今天);D ATE2;”m“) 或 = 日期;D ATE2;”m“) 将不起作用,因为在 11

  • 问题内容: 进行以下操作的最佳方法是什么: 注意:创建的是日期时间字段。 问题答案: 但是我想你是说

  • 问题内容: 如何使用PHP查找两个日期之间的天数? 问题答案:

  • 问题内容: 如何编写查询以获取今天的日期数据? 问题答案: 正确答案将取决于您的确切类型。假设它是类型: 如果是: