You've already forked mongo-index-helper
Compare desired indexes against existing ones before applying changes: - skip indexes that are already up to date - drop and recreate if definition changed - handle key conflicts (same key, different name) - drop obsolete indexes not present in the JSON Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
mongo-index-helper
Два bash-скрипта для экспорта и импорта схемы индексов MongoDB. Предназначены для запуска внутри контейнера mongo.
Скрипты
export-indexes.sh— экспортирует индексы всех коллекций указанной БД в JSON-файлimport-indexes.sh— импортирует индексы из JSON-файла в указанную БД
Технические детали
- Требуют
mongosh(доступен в официальном образе mongo 5+) - Встроенный JavaScript передаётся через временный
.js-файл в/tmp, который удаляется после выполнения - Переменные среды
MONGO_DB,DRY_RUN,INDEXES_JSONиспользуются для передачи параметров в JS-код внутри mongosh - Индекс
_id_пропускается при экспорте и импорте - Поля
vиnsудаляются из экспортируемых индексов (служебные, не нужны при создании)
Формат JSON
{
"collectionName": [
{
"key": { "field": 1 },
"name": "index_name",
"unique": true
}
]
}
Имя БД в файл не сохраняется — передаётся параметром --db при каждом запуске.
Поведение импорта
- Если коллекция не существует — создаётся автоматически
- Индексы сравниваются с существующими перед применением:
- Совпадает по имени и определению — пропускается
- Совпадает по имени, но определение изменилось — дропается и пересоздаётся
- Совпадает по ключу, но имя другое — старый дропается, создаётся новый с нужным именем
- Есть в БД, но отсутствует в JSON — дропается как устаревший
--dry-runпоказывает все планируемые действия без их выполнения