Files
mongo-index-helper/README.md
2026-04-01 11:50:03 +03:00

92 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# mongo-index-helper
Bash-скрипты для экспорта и импорта схемы индексов MongoDB. Работают внутри контейнера mongo через `mongosh`.
## Требования
- `mongosh` (входит в официальный образ `mongo:5+`)
## Использование
### Экспорт
```bash
./export-indexes.sh --uri <uri> --db <dbname> --output <file>
```
| Параметр | Описание | Обязательный |
|------------|---------------------------------|:------------:|
| `--uri` | MongoDB connection URI | да |
| `--db` | Имя базы данных | да |
| `--output` | Путь к выходному JSON-файлу | да |
**Пример:**
```bash
./export-indexes.sh \
--uri "mongodb://admin:secret@localhost:27017/admin" \
--db mydb \
--output indexes.json
```
### Импорт
```bash
./import-indexes.sh --uri <uri> --db <dbname> --input <file> [--dry-run]
```
| Параметр | Описание | Обязательный |
|-------------|-------------------------------------------------------|:------------:|
| `--uri` | MongoDB connection URI | да |
| `--db` | Имя базы данных | да |
| `--input` | Путь к входному JSON-файлу | да |
| `--dry-run` | Показать планируемые действия без реального выполнения | нет |
**Примеры:**
```bash
# Предварительный просмотр
./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 без указания имени БД:
```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_` игнорируется при экспорте и импорте