#json #mongodb #mongoid #nosql
#json #mongodb #mongoid #nosql
Вопрос:
Для импорта большого набора данных JSON в MongoDB у нас есть утилита mongoimport, которая работает следующим образом:
mongoimport --host xxx.xxx.xxx.xxx --db destination-db -c tags < tmp/source-file.json
Есть ли способ вызвать ‘mongoimport’ с помощью MongoID, средства отображения объектов-документов ruby для MongoDB?
Спасибо Luca
Комментарии:
1. Есть ли причина, по которой вы хотели бы это сделать?
2. чтобы внедрить «бизнес-логику» в приложение rails, избегая использования «внешней» команды оболочки в crontab или чем-то еще, что стало зависимым от платформы. Как бы вы использовали mongoimport с Heroku, например?
3. Итак, у вас где-то есть экспорт (с помощью какого процесса?), и вы хотите импортировать его, используя код вместо утилиты?
4. Я хотел бы «получить» документ json от внешнего поставщика API, сохранив json непосредственно в MongoDB, используя мое приложение Rails с уже установленным интерфейсом MongoID…
5. Я также хотел бы знать, как это сделать. В прошлом я просто выполнял системную команду из rails (
`mongoimport`
), но это решение далеко от идеального.
Ответ №1:
Mongoid фактически является оболочкой вокруг драйвера Ruby. Драйвер Ruby должен позволять вам запускать любую из команд базы данных.
Однако, mongoimport
это не команда. mongoimport
представляет собой отдельный двоичный (или исполняемый) файл.
Единственный способ запустить mongoimport
с Ruby — это «раскошелиться». Обычно для этого используется некоторая форма exec
команды. Вот первая ссылка для поиска запускаемых команд оболочки из Ruby.
Комментарии:
1. Спасибо Гейтсу, вице-президенту, очень полезная статья. Я, наконец, запускаю работу system («mongoimport —локальный хост хоста —db myDB —репозиторий коллекции —файловые теги.json -f репозитории»)
Ответ №2:
Вы также можете проанализировать JSON из своего файла и просто запустить Model.create(json_obj)
и Mode.save
непосредственно в задаче rake.