Импорт большого набора данных в MongoDB через MongoID

Для импорта большого набора данных JSON в MongoDB у нас есть утилита mongoimport, которая работает следующим образом:

mongoimport --host xxx.xxx.xxx.xxx --db destination-db -c tags < tmp/source-file.json

Есть ли способ вызвать «mongoimport», используя MongoID, ruby ​​Object-Document-Mapper для MongoDB?

Спасибо, Лука.


person Luca G. Soave    schedule 25.04.2011    source источник
comment
Есть ли причина, по которой вы хотели бы это сделать?   -  person lobster1234    schedule 25.04.2011
comment
чтобы внедрить «бизнес-логику» в приложение rails, избегая «внешней» команды оболочки для использования в crontab или чем-то еще, что стало зависеть от платформы. Как бы вы использовали mongoimport, например, с Heroku?   -  person Luca G. Soave    schedule 25.04.2011
comment
Итак, у вас где-то есть экспорт (по какому процессу?), и вы хотите импортировать его, используя код вместо утилиты?   -  person lobster1234    schedule 25.04.2011
comment
Я хотел бы «получить» документ json от внешнего поставщика API, сохраняя json непосредственно в MongoDB, используя мое приложение Rails с уже установленным интерфейсом MongoID...   -  person Luca G. Soave    schedule 25.04.2011
comment
Я бы тоже хотел знать, как это сделать. В прошлом я только что выполнил системную команду из рельсов (`mongoimport`), но это решение далеко от идеального.   -  person bowsersenior    schedule 26.04.2011


Ответы (2)


Mongoid фактически является оболочкой для драйвера Ruby. Драйвер Ruby должен позволять вам выполнять любые команды базы данных.

Однако mongoimport не является командой. mongoimport — это отдельный бинарный (или исполняемый) файл.

Единственный способ запустить mongoimport из Ruby — это «раскошелиться». Обычно это включает в себя использование некоторой формы команды exec. Вот первая ссылка для поиска запуска команд оболочки из Ruby.

person Gates VP    schedule 26.04.2011
comment
Спасибо Gates VP, очень полезная статья. Наконец-то я получаю работу под управлением системы (mongoimport --host localhost --db myDB --collection repo --file tags.json -f repositories) - person Luca G. Soave; 27.04.2011

Вы также можете проанализировать JSON из своего файла и просто запустить Model.create(json_obj) и Mode.save непосредственно в задаче rake.

person chug2k    schedule 13.06.2011