#mongodb #zoneddatetime #mongodb-shell
Вопрос:
У меня есть эти документы mongo с такой датой: эта дата java: ZonedDateTime.now(), но она вошла в mongo в виде строки:
db.test.insert({"dateString" : "2020-07-24T11:06:53.975 02:00[GMT 02:00]"})
Поэтому я хочу вытащить отчет, но отформатировать его на сегодняшний день, чтобы я мог внести некоторые изменения в процесс:
пытался:
db.test.aggregate([{$project: {date: {"$dateFromString": {"dateString": "$dateString", "format": "yyyy-MM-dd'T'HH:mm:ss", "timezone": "Etc/GMT 2"}}}}])
Но я, кажется, не могу правильно сформулировать формат:
«errmsg» : «Ошибка при анализе строки даты ‘2020-07-24T11:06:53.975 02:00[GMT 02:00]»; 0: Литерал формата не найден’ 2′; 1: Литерал формата не найден’ 0′; 2: Литерал формата не найден’ 2′; 3: Литерал формата не найден’ 0′; 5: Литерал формата не найден’ 0′; 6: Литерал формата не найден’ 7′; 8: Литерал формата не найден’ 2′; 9: Литерал формата не найден’ 4′; 10: Литерал формата не найден найдено «T»; 11: Литерал формата не найден «1»; 12: Литерал формата не найден «1»; 13: Литерал формата не найден»:»; 14: Литерал формата не найден «0»; 15: Литерал формата не найден «6»; 16: Литерал формата не найден»:»; 17: Литерал формата не найден «5»; 18: Литерал формата не найден «3»; 19: Литерал формата не найден».»; 20: Литерал формата не найден «9»; 21: Литерал формата не найден «7»; 22: Литерал формата не найден «5»; 23: Конечные данные» «»
Ответ №1:
Операторы даты не будут понимать пользовательский формат, а также не будут понимать смещение часового пояса
$substr
чтобы выбрать только дату от 0 до 23 символов- установите часовой пояс на «GMT».
db.test.aggregate([
{
$project: {
date: {
"$dateFromString": {
"dateString": {
"$substr": [ "$dateString", 0, 23 ]
},
"timezone": "GMT"
}
}
}
}
])