Администрирование MongoDB через скрипты командной строки - PullRequest
1 голос
/ 06 октября 2011

в mysql я могу администрировать свою базу данных (основная цель - автоматизировать сборку базы данных, последовательно применяя изменения к ней с помощью скриптов), выполняя такие команды:

mysql -u root my_database < script_1.sql
mysql -u root my_database < script_2.sql

Где script_1.sql выглядит так:

DROP DATABASE IF EXISTS my_database;
CRATE DATABASE my_database;

И script_2.sql примерно так:

INSERT INTO ...

Хорошо, я хочу то же самое для Монго, но вместо запуска команд SQL яхотел бы запускать команды mongo db.

Возможно ли что-то подобное?

Ответы [ 2 ]

3 голосов
/ 07 октября 2011

Во-первых, в Монго объекты создаются на лету (когда вы вставляете первый объект в первую коллекцию базы данных), поэтому, возможно, вам не нужно создавать базу данных и коллекцию.

ЗатемВы можете использовать 2 различных инструмента для наполнения ваших баз данных объектами: mongoimport и mongo

mongo -d myDatabase --eval  "db.aCollection.insert({_id : ..,....,....})"

или

mongo -d myDatabase --eval bob.js

могут выполнять любой необходимый вам javascript.Это делается с помощью блокировки на БД, поэтому не используйте ее на экземпляре, который используется для запросов.

Второй метод заключается в использовании mongoimport, как сказано в другом ответе.Это проще, если у вас есть список объектов и нет других типов команд.Обратите внимание, что объекты вставлены (не вставлены), поэтому дублирование не должно завершиться ошибкой.

1 голос
/ 06 октября 2011

Полагаю, импорт инструментальных и командных файлов хорошо подходят для ваших нужд.

Например, если вы импортировали файл, который выглядит следующим образом:

{"_id": {"$ oid": "4e5bb37258200ed9aabc5d65"}, "name": "Bob", "age": 28, "address": "123 Fake Street"}

, запустив

mongoimport -d test -c foo importfile.json

Чтобы удалить базу данных, вы можете остановить mongodb (также через пакетный файл), удалить файлы базы данных и снова запустить базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...