Как сохранить LocalDate в MongoDB без времени (почему монго сохраняет дату со временем, даже если я сохраняю только дату)?

Я пытаюсь сохранить List‹ LocalDate > в монго (только дату без времени в формате гггг-ММ-дд). После того, как мой API завершит вычисление dateList , я пытаюсь чтобы сохранить эти даты в MongoDB. После сохранения я вижу, что даты сохраняются в формате гггг-мм-дд чч:мм:сс, как показано ниже.

введите здесь описание изображения

Может кто-нибудь сообщить мне, почему это происходит? Есть ли способ просто сохранить LocalDate в формате гггг-мм-дд? Большое спасибо.

Я использую SpringJPA Mongo с springboot и Java.


person U C    schedule 05.02.2020    source источник


Ответы (1)


Это происходит потому, что MongoDB хранит данные в формате BSON (см. спецификацию BSON).

В BSON нет типа данных для Date, есть только Timestamp и UTC Datetime, оба из которых хранятся как 64-битное целое число. UTC datetime — это количество миллисекунд, прошедших с начала эпохи, что приводит к тому, что часть времени становится нулевой при ее отображении.

Если вы хотите сохранить только дату, вам нужно будет использовать строковый тип.

Если проблема заключается в том, как отображаются данные, вам просто понадобится другая функция для преобразования временной метки, возвращаемой из MongoDB, в формат отображения, который вы хотите использовать.

person Joe    schedule 06.02.2020
comment
спасибо за Ваш ответ. Я попытаюсь преобразовать его в строку и сохранить. - person U C; 06.02.2020