Уникальный индекс MongoDB не создается при весенней загрузке - PullRequest
0 голосов
/ 26 мая 2020

В приложении Spring boot + MongoDB я пытаюсь создать уникальный индекс для поля электронной почты.

@Document
public class User {

    @Id
    private String id;

    @Indexed(unique = true)
    private String email;

}
public interface UserRepository extends MongoRepository<User, String>

Но я все еще могу вставить два пользовательских объекта с одним и тем же адресом электронной почты, поэтому

userRepository.save(new User("my@email.com"))
userRepository.save(new User("my@email.com"))

создает две записи в коллекции пользователей.

Что я делаю не так?

Я знаю Spring Data MongoDB - Где программно создать индекс для коллекции Mon go? , но я Я ищу решение "только аннотации".

1 Ответ

0 голосов
/ 26 мая 2020

Проверка - https://docs.mongodb.com/manual/core/index-unique/

В нем указано - MongoDB не может создать уникальный индекс для указанных полей индекса, если коллекция уже содержит данные, которые нарушают уникальное ограничение для индекс.

Итак, если в вашей коллекции есть несколько документов, уже имеющих такое же значение адреса электронной почты, то, если вы пытаетесь создать индекс в поле электронной почты, это может не сработать. Проверьте, есть ли у вас такие документы.

...