Я пишу утилиту на работе, которая преобразует нашу реляционную БД на работу в сложный объект JSON и сбрасывает файлы, сгруппированные по предмету. Затем я хотел бы импортировать эти файлы в коллекции MongoDB с помощью инструмента mongoimport
.MongoImport Даты, возникающие до эпохи
Наши данные включают временные метки, которые представляют даты, происходящие до эпохи, соответствующее JSON-представление которых дает отрицательные числа. В то время как MongoDB сам будет обрабатывать эти штрафы, инструменты импорта JSON-парсер использует переменные unsigned long long
и терпит неудачу.
Если вы используете специальный формат представления даты JSON Mongo ({"key": { "$date": "value_in_ticks" } }
), инструмент импорта выдаст ошибку на этих документах и пропустит импорт. Вы также можете использовать нотацию даты JavaScript ({"key": new Date(value_in_ticks) }
), которая будет успешно импортирована, но проанализирована как значение без знака, создающее дату мусора.
Специальный формат даты не работает из-за assertion checking for reserved words. Этот код достигается потому, что наличие отрицательного знака в начале значения приводит к тому, что специальный синтаксический анализ даты заканчивается и возвращается к обычному анализу документа.
code to parse JSON dates явно называет библиотеку форсирования uint_parser
. Существует подписанная версия этой функции, и issue on their JIRA tracker уже существует для ее использования (на которой я прокомментировал, что я попытаюсь).
Коротко окунуться в код немедленно, чтобы попробовать и обновить его для подписания, есть ли альтернативный маршрут, который я могу взять, чтобы загрузить эти даты?
Я хочу запустить эту ночь через cron в течение нескольких месяцев для тестирования, поэтому я бы предпочел, чтобы это было очень легко. Эти даты существуют во многих разных частях документов во многих разных коллекциях, поэтому решение должно быть обобщено.
Хотя у меня нет ответа, +1 для хорошо написанного вопроса. – UnkwnTech