我想啓動分片。因爲你知道碎片密鑰非常重要。我發現,MongoDB doesn't ensure unique _id field values when using a shard key other than _id。當使用複合分片鍵和_id時,MongoDB確保唯一的_id字段值
在我們的收藏中,用戶名應該是分片鍵。如果我創建複合分片鍵並使用_id作爲分片鍵的第二部分,mongoDB是否能保證_id的唯一性?
我想啓動分片。因爲你知道碎片密鑰非常重要。我發現,MongoDB doesn't ensure unique _id field values when using a shard key other than _id。當使用複合分片鍵和_id時,MongoDB確保唯一的_id字段值
在我們的收藏中,用戶名應該是分片鍵。如果我創建複合分片鍵並使用_id作爲分片鍵的第二部分,mongoDB是否能保證_id的唯一性?
MongoDB的不確保跨越碎片獨特_id
字段。
MongoDB的可以強制唯一性的片鍵。對於複合分片 密鑰,MongoDB將強制整個密鑰組合的唯一性, 和,而不是分片密鑰的特定組件。
因此,如果您希望mongo強制執行電子郵件的唯一性,那麼只需使用電子郵件作爲分片鍵即可。
電子郵件地址有一些隨機性,這是很好的(內置_id
has some predictability),但我建議您使用電子郵件字段作爲hashed shard key。
在你的例子中,使用'email'的分片鍵是否必須是唯一的?謝謝 – mils
MongoDB確保複合鍵所有字段的唯一性。但我不確定這是不是你要找的。如果你有這些文件會發生什麼? {_id:12345,電子郵件:「[email protected]」}和{_id:4567,電子郵件:「[email protected]」}。分片密鑰是唯一的,但您有兩次相同的電子郵件。
如果您正在尋找所有分片上唯一的電子郵件,您可以嘗試使用唯一索引創建代理集合。作爲化合物鍵一起使用時
它會確保用戶名和_id組合是唯一的,但不是特別的_id – Sammaye