You've already forked mongo-index-helper
2.8 KiB
2.8 KiB
mongo-index-helper
Bash-скрипты для экспорта и импорта схемы индексов MongoDB. Работают внутри контейнера mongo через mongosh.
Требования
mongosh(входит в официальный образmongo:5+)
Использование
Экспорт
./export-indexes.sh --uri <uri> --db <dbname> --output <file>
| Параметр | Описание | Обязательный |
|---|---|---|
--uri |
MongoDB connection URI | да |
--db |
Имя базы данных | да |
--output |
Путь к выходному JSON-файлу | да |
Пример:
./export-indexes.sh \
--uri "mongodb://admin:secret@localhost:27017/admin" \
--db mydb \
--output indexes.json
Импорт
./import-indexes.sh --uri <uri> --db <dbname> --input <file> [--dry-run]
| Параметр | Описание | Обязательный |
|---|---|---|
--uri |
MongoDB connection URI | да |
--db |
Имя базы данных | да |
--input |
Путь к входному JSON-файлу | да |
--dry-run |
Показать планируемые действия без реального выполнения | нет |
Примеры:
# Предварительный просмотр
./import-indexes.sh \
--uri "mongodb://admin:secret@localhost:27017/admin" \
--db mydb \
--input indexes.json \
--dry-run
# Реальный импорт
./import-indexes.sh \
--uri "mongodb://admin:secret@localhost:27017/admin" \
--db mydb \
--input indexes.json
Формат файла
Индексы сохраняются в JSON без указания имени БД:
{
"users": [
{
"key": { "email": 1 },
"name": "email_1",
"unique": true
},
{
"key": { "createdAt": 1 },
"name": "createdAt_1",
"expireAfterSeconds": 2592000
}
],
"orders": [
{
"key": { "userId": 1, "status": 1 },
"name": "userId_1_status_1"
}
]
}
Поведение импорта
- Коллекция не существует → создаётся автоматически
- В коллекции есть индексы → дропаются перед созданием новых
- Индекс
_id_игнорируется при экспорте и импорте