Сбой обновления индекса MongoDB при развертывании

#java #mongodb #spring-boot #spring-data-mongodb

#java #mongodb #весенняя загрузка #spring-data-mongodb

Вопрос:

У нас есть следующая настройка: у нас есть серверная часть Spring Boot, развернутая на AWS, и мы инициализируем MongoRepository через Spring. Мы индексируем некоторое поле с помощью аннотации

 @Indexed(expireAfterSeconds = 43200)
private Date createdAt;
  

и сейчас сталкиваемся с проблемой, что всякий раз, когда мы обновляем индекс, сборка завершается неудачно из-за

«Индекс с именем: Созданный, который уже существует с различными параметрами»

У меня было ощущение, что до обновления до spring_data_mongo 3.0.1.RELEASE у нас не было этой проблемы при развертывании нашего приложения на AWS. У кого-нибудь есть идея, чего мне не хватает?

Комментарии:

1. Что дает getIndexes для данной коллекции? Вы можете «изменить» @Indexed для данного createdAt , чтобы соответствовать спецификации индекса.

2. Спасибо, но я думаю, что я недостаточно четко сформулировал свой вопрос, извините за это! Моя проблема в том, что мы определили индекс createdAt с определенным значением для expireAfterSeconds, но теперь я хочу изменить этот параметр или полностью удалить индекс. Я подумал, что должен быть способ обновить индекс в базе данных при развертывании. Прямо сейчас у меня есть единственный выбор — вручную удалить индекс, чтобы при развертывании он мог создать скорректированный. Но должен быть лучший автоматический способ?! Или переиндексация или удаление индекса при запуске приложения — единственное решение, которое было бы очень дорогим?

3. согласно этому : «Вы не можете использовать createIndex() для изменения значения expireAfterSeconds существующего индекса. Вместо этого используйте команду базы данных collMod в сочетании с флагом сбора индекса. В противном случае, чтобы изменить значение параметра существующего индекса, вы должны сначала удалить индекс и создать его заново».