我們正在探索Mongo尋找一個新網站,我們希望確保沒有兩個用戶使用同一個電子郵件地址註冊,因此,電子郵件字段中的唯一索引是必需的。在Mongo中,是否支持分片環境的獨特索引?
這是否支持Mongo分區環境? Mongo文檔狀態支持唯一索引,但沒有提及碎片。
http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes
我們正在探索Mongo尋找一個新網站,我們希望確保沒有兩個用戶使用同一個電子郵件地址註冊,因此,電子郵件字段中的唯一索引是必需的。在Mongo中,是否支持分片環境的獨特索引?
這是否支持Mongo分區環境? Mongo文檔狀態支持唯一索引,但沒有提及碎片。
http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes
從文檔:
可以使用
{unique: true}
選項,以確保底層 索引實施唯一性,只要唯一索引是 的片鍵的前綴。 (注意:在版本2.0之前,僅當 集合爲空時才起作用)。
http://www.mongodb.org/display/DOCS/Configuring+Sharding
這使得直觀的感覺,因爲MongoDB的無跨碎片檢查的獨特性,除非片鍵爲您提供了這樣的跨碎片的唯一保證「免費」的方式。
我們做
if($exists = $mongo_UserCollection->findOne($desiredEmail))
{
throw new User_Exception('Email address in use.');
}
不知道我完全理解。我只需要使電子郵件字段成爲分片鍵的一部分?如果我的分片鍵是'姓氏:1,電子郵件:1',如何才能確保唯一性只在'email'而不是'lastname'上執行? – user646584 2011-12-31 23:01:51
如果你這樣做,mongo將能夠確保姓氏是唯一的,但不是電子郵件。如果你的分片鍵被顛倒了,那麼電子郵件的唯一性就可以保證。唯一索引需要是分片鍵的前綴,而不僅僅是子集。 – 2011-12-31 23:14:56