Можно ли создать несколько «уникальных и редких» индексов с помощью Azure cosmos mongodb API - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать несколько уникальных индексов для коллекции users, которые также редки.

Вариант использования: разрешить пользователю зарегистрироваться по телефону или электронной почте.

Проблема: Mongo db позволяет создавать такие индексы, и приложение работает, как ожидается, при подключении к реальному экземпляру Mongo 3.2.Однако в космосе электронная почта становится уникальным, но не редким полем.

Есть ли способ реализовать этот вариант использования с космосом через API mongodb?т. е. не прибегая к проверке уникальности с помощью запроса на выборку перед каждой вставкой.

Попытки: просмотр документации по космосу выявил мало.Они утверждают, что поддерживают API Mongo 3.2, и разреженные индексы не упоминаются в предостережениях.Создание уникально-разреженного индекса с createIndex не приводит к ошибке, а только создает уникальный индекс.Создание другого подобного индекса в другом поле не приводит к ошибке, но даже не создает уникальный индекс.Он создает нормальный индекс.

Обновление: получен ответ от службы поддержки Azure:

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

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

1 Ответ

0 голосов
/ 08 октября 2018

Можете ли вы просмотреть эту ветку форума переполнения стека: Уникальный редкий индекс Mongodb

Выполните следующие действия:

var UserSchema = new Schema({ // ... email: {type: String, default: null, trim: true, unique: true, sparse: true}, // ... });

Примечание: уникальный: правда, редкий: правда

...