Импорт даты-типа данных с использованием mongoimport

У меня есть много ГБ данных, хранящихся в базе данных PostgreSQL, и мне нужны те, которые будут импортированы в MongoDB. Я сделал это, используя экспорт CSV и mongoimport.

В этом CSV есть такие столбцы, как "2011-06-25", и он был импортирован как строка, а не как MongoDate, поэтому я не могу эффективно искать по дате.

Я нашел это: http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-Example%3AImportingInterestingTypes но пример говорит, мне нужно использовать структуру JSON для файла. Мне действительно нужно экспортировать JSON файл из PostgreSQL?

Если я делаю - как?

Если я этого не делаю, как экспортировать "MongoDate" через CSV?

Ответ 1

Ваши варианты:

  • импортируйте материал как CSV и преобразуйте данные после импорта в Date() (либо используя консоль mongo, либо используя script, написанный на вашем любимом языке)

  • импортируйте свои данные как JSON и используя дескриптор $date для преобразования строк даты в экземпляры даты

Ответ 2

На самом деле первый вариант довольно быстрый даже с огромными данными. Вот пример запроса с помощью консоли mongo:

/usr/bin/mongo yourdbname --eval "db.yourcollectionname.find().forEach(function(doc){doc.yourdatefield = new ISODate(doc.yourdatefield);db.yourcollectionname.save(doc)});"

Ответ 3

Напишите script, используя ваш любимый язык для импорта данных. Это позволит вам управлять типом данных и применять структурные изменения к данным.

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

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