База данных Mongodb с несколькими уникальными индексами в конфигурации sharded - PullRequest
0 голосов
/ 07 марта 2011

У меня есть коллекция "users" в базе данных на mongodb.Я буду использовать sharding.

Кроме стандартного _id, есть еще 3 поля, которые необходимо проиндексировать, и уникальные: имя пользователя, адрес электронной почты и номер счета.Все 3 из этих полей не обязательно будут существовать для каждого пользовательского документа, в некоторых случаях их не будет.

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

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

Есть ли элегантное решение для этого сценария?

Не уверен, имеет ли это значение для этого вопроса (поскольку вопрос относится кв структуру базы данных), но я использую официальный драйвер C # mongodb.

1 Ответ

3 голосов
/ 07 марта 2011

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

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

...