Уникальны вместе, только если присутствуют оба значения - PullRequest
0 голосов
/ 17 июня 2020

У меня есть такая схема

const appSchema = new mongoose.Schema({
 email: String,
 appId: {
   type: String,
   required: true
 }
})

Я сделал ее уникальной вместе с appUserSchema.index({ email: 1, appId: 1}, { unique: true, sparse: true });.

Что мне делать, если я хочу, чтобы несколько email были пустыми ( анонимные пользователи)? В настоящее время у меня может быть только одна запись с пустым email из-за вышеуказанного ограничения.

1 Ответ

1 голос
/ 17 июня 2020

Вы можете использовать здесь опцию partialFilterExpression. ( mon go docs )

Вы можете создать свой индекс, как показано ниже:

appUserSchema.index({ email: 1, appId: 1}, { partialFilterExpression: { email: { $exists: true } }, unique: true});

Вы должны удалите разреженный вариант, поскольку он несовместим с частичной индексацией. Здесь он создает составной индекс, только если адрес электронной почты существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...