Уникальная проверка вложенного документа Mongoose JS

#node.js #mongoose

#node.js #mongoose

Вопрос:

Я создаю приложение, которое использует UID мобильного устройства в качестве одного из средств аутентификации сеансов для каждой родительской модели. Я намереваюсь, будучи пользователем, пройти аутентификацию у нескольких родителей, но иметь только одну запись сеанса в базе данных для каждого родителя.

 ParentSchema {
  sessions: [{
   device_uid: { type: String, unique: true }
  }]
}
  

Session — это его собственный объект схемы (написанный встроенным для простоты).

Мой вопрос: если я помещу уникальную проверку в device_uid, является ли контекст проверки вложенными документами для его родительского элемента или ВСЕМИ вложенными документами сеанса для ВСЕХ родителей?

Ответ №1:

Уникальный индекс в device_uid вложенном документе sessions массива гарантирует, что ни в одном из двух документов не может быть sessions элемента массива с одинаковым device_uid значением. Однако это по-прежнему позволяет двум элементам в одном документе иметь одинаковое значение device_uid .

Комментарии:

1. Интересно. Таким образом, даже если вложенный документ является его собственной схемой, уникальная проверка по-прежнему выполняется в контексте самой верхней родительской схемы или документа?

2. @snowman4415 правильно. Индексы Mongoose всегда реализуются с использованием индекса MongoDB, определенного в коллекции.