Я пишу утилиту на работе, которая преобразует нашу реляционную БД на работе в сложный объект JSON и создает дампы в файлы, сгруппированные по темам.Затем я хотел бы импортировать эти файлы в коллекции MongoDB, используя инструмент mongoimport
.
Наши данные включают метки времени, которые представляют даты, происходящие до эпохи, соответствующее представление JSON, которое дает отрицательные числа.Хотя MongoDB сама справится с этим, анализатор JSON инструментов импорта использует unsigned long long
переменных и завершается ошибкой.
Если вы используете специальный формат представления даты JSON Mongo ({"key": { "$date": "value_in_ticks" } }
), инструмент импорта выдаст ошибкуэти документы и пропустить импорт.Вы также можете использовать нотацию JavaScript-даты ({"key": new Date(value_in_ticks) }
), которая будет успешно импортирована, но проанализирована как неподписанное значение, создающее мусорную дату.
Специальный формат даты не выполняется из-за проверки утверждения зарезервированослова .Этот код достигнут, потому что наличие отрицательного знака в начале значения приводит к тому, что специальный анализ даты завершается и возвращается к обычному анализу документа.
Код для синтаксического анализа дат JSON в явном видевызывает библиотеку наддува uint_parser
.Существует подписанная версия этой функции, и проблема на их трекере JIRA уже существует, чтобы использовать ее (на что я прокомментировал, что я попытаюсь).
Если не углубляться в код немедленночтобы попытаться обновить это, чтобы оно было подписано, есть ли альтернативный маршрут, которым я могу сейчас воспользоваться, чтобы загрузить эти даты?
Я хочу запустить этот ночной сервер через cron в течение нескольких месяцев для тестирования, поэтому я бы предпочел егобыть очень легкимЭти даты существуют во многих различных частях документов во многих различных коллекциях, поэтому решение следует обобщить.