#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 в сочетании с флагом сбора индекса. В противном случае, чтобы изменить значение параметра существующего индекса, вы должны сначала удалить индекс и создать его заново».