Задать вопрос

Unique или null для поля. Возможно ли такое в mongo?

в mongodb для поля добавлен индекс с признаком unique.
возможно ли настроить его так, чтобы на значения null уникальность не распространялась?
  • Вопрос задан
  • 2895 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    Фулстек-разработчик
    16 месяцев
    Далее
  • Яндекс Практикум
    Бэкенд на Node.js для фронтенд-разработчиков
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
db.collection.ensureIndex( { a: 1 }, { unique: true, sparse: true } )



In many situations you will want to combine the unique constraint with the sparse option. When MongoDB indexes a field, if a document does not have a value for a field, the index entry for that item will be null. Since unique indexes cannot have duplicate values for a field, without the sparse option, MongoDB will reject the second document and all subsequent documents without the indexed field. Consider the following prototype.
Ответ написан
@lega
К ответу выше, ещё вариант - хранить не значение, а список.
В итоге пустой список будет пропускаться (не будет входить в uniq), а так же появляется доп. возможность - один документ сможет "резервировать" несколько уникальных значений. Например при уникальности email, в уникальность можно будет добавить аналоги uniq_email:['mail@yandex.ru', 'mail@ya.ru']
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы