java - Spring Data Mongo : How to save only date i. e。不是时间

标签 java spring-data-mongodb

在其中一个集合中,我有一个字段需要设置为当前日期,例如“2018-01-26”。其中不应包含任何时间。这使我可以轻松地根据日期查询文档。我尝试过使用下面的代码,它总是保存日期和时间。

 @DateTimeFormat(iso= DateTimeFormat.ISO.DATE_TIME)
private Date journeyDate;

 @DateTimeFormat(iso= DateTimeFormat.ISO.DATE)
    private Date journeyDate;

如何才能在数据库中只保存日期部分?

最佳答案

您无法真正将 Mongo 中的日期设置为“2018-01-26”。因为无论我们做什么转换,最终我们都需要创建一个 Date 对象来保存在 Mongo 中。没有时间,日期对象就不可能存在。

但是您可以做的是,您可以通过编写自定义转换器并注册它来控制存储的内容。
在此转换器中,我所做的是将所有日期截断为一天的开始,这意味着所有日期的时间都设置为 00:00:00(无论其时间如何)。这样您整天都有相同的时间。我希望这有助于编写您需要的查询。

@Configuration
public class MongoConverterConfig
{

  @Bean
  public CustomConversions dateConversions()
  {
    List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>();
    converterList.add(new DateConverter());
    return new CustomConversions(converterList);
  }

  @WritingConverter
  static class DateConverter implements Converter<Date, Date> {

    @Override
    public Date convert(Date input) {
      if (input == null) {
        return null;
      }
      return Date.from(Instant.ofEpochMilli(input.getTime()).truncatedTo(ChronoUnit.DAYS));
    }
  }
}

如果您确实只想在 mongo 中存储“2018-01-26”,那么您必须将其存储为字符串,我不建议这样做。

关于java - Spring Data Mongo : How to save only date i. e。不是时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462554/

相关文章:

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

java - Spring Data MongoDB 是否支持 MongoDB 3.4 整理功能?

java - 如何通过_id查询mongodb?

java - 使用 GeckoDriver 在 Linux 上运行 Selenium 测试 : driver is not executable

java - 在 Java 中使用流进行序列化

java - RESTEasy:找不到内容类型应用程序/json 类型的编写器

spring-data - Mongodb - 如何使用不同的名称作为键而不是属性名称

java - 在 Hibernate 中,为什么 Set 是表示多值关联的推荐方式

java - 在java面试中写一个co relation

java - 聚合框架 - 组操作抛出 NumberFormatException