В Mongo поддерживаются ли уникальные индексы для изолированных сред? - PullRequest
1 голос
/ 01 января 2012

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

Поддерживается ли это в защищенной среде Монго? Документация Mongo утверждает, что поддерживаются уникальные индексы, но не упоминает шарды.

http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes

Ответы [ 2 ]

5 голосов
/ 01 января 2012

Из документации:

Вы можете использовать опцию {unique: true}, чтобы обеспечить Индекс обеспечивает уникальность, пока уникальный индекс является префиксом ключ осколка. (примечание: до версии 2.0 это работало, только если коллекция пуста).

http://www.mongodb.org/display/DOCS/Configuring+Sharding

Это имеет интуитивный смысл, поскольку у mongodb нет способа проверить уникальность между осколками, если только ключ осколка не дает вам такие гарантии уникальности между осколками «бесплатно».

0 голосов
/ 11 января 2012

Мы делаем

if( $exists = $mongo_UserCollection->findOne( $desiredEmail ) )
{
    throw new User_Exception( 'Email address in use.' );
}
...