2016-11-23 4 views
0

Есть ли встроенный способ сказать, что поле должно быть уникальным, если оно не равно нулю. Например, я хочу, чтобы у пользователей был уникальный номер телефона, но это не обязательное поле. Таким образом, он может быть нулевым, и, следовательно, он нарушает уникальное ограничение, если другой пользователь добавлен без номера телефона.Уникальный, если нет null check in mongoose

Это почти тот же вопрос: mongoDB/mongoose: unique if not null, но с более новыми версиями как мангуста, так и монгодба, я думаю, должен быть лучший способ достичь этого.

+0

вы можете использовать частичный индекс с ограничением уникальности относятся: https: //docs.mongodb.com/v3.2/core/index-partial/#partial-index-with-unique-constraints – Sam

ответ

1

Если вы не любите сочетать редкие и уникальные индексы, как в ответ вы предоставили

db.users.ensureIndex({ phone: 1 }, { unique: true, sparse: true }); 

Вы можете использовать partial index, который не реализован в мангуста, но доступен в качестве родного оператора.

db.users.createIndex(
    { phone: 1 }, 
    { partialFilterExpression: { phone: { $exists: true } } } 
)