MongoDB:分片系统无法强制执行群集范围的唯一索引
从mongoDB文档()我正在阅读 除非 唯一字段位于碎片键中 我不是舒尔,无法很好地理解。 如果我有以下唯一索引 {a,b,c,d} 还有切碎的钥匙 {a,b}MongoDB:分片系统无法强制执行群集范围的唯一索引,mongodb,mongodb-indexes,Mongodb,Mongodb Indexes,从mongoDB文档()我正在阅读 除非 唯一字段位于碎片键中 我不是舒尔,无法很好地理解。 如果我有以下唯一索引 {a,b,c,d} 还有切碎的钥匙 {a,b} {a,b,c,d}的唯一性是否在所有集群中都得到尊重?由于碎片密钥是唯一密钥的前缀,因此该唯一性将被保留。关键的洞察是,每个区块只存在于一个碎片上 唯一性约束是,如果您有两个不同的文档,其中a、b、c和d都相等,那么它们不应该同时存在,因为它们不是唯一的。但是,由于a和b的值相同,它们必须在同一块中,因此它们将位于同一个碎片上。该碎片
{a,b,c,d}的唯一性是否在所有集群中都得到尊重?由于碎片密钥是唯一密钥的前缀,因此该唯一性将被保留。关键的洞察是,每个区块只存在于一个碎片上 唯一性约束是,如果您有两个不同的文档,其中a、b、c和d都相等,那么它们不应该同时存在,因为它们不是唯一的。但是,由于a和b的值相同,它们必须在同一块中,因此它们将位于同一个碎片上。该碎片在{a:1,b:1,c:1,d:1}上有唯一索引,因此它将保持这两个文档的唯一性不变,并且不允许插入第二个文档 因此: {a,b,c,d}的唯一性是否在所有集群中都得到尊重 对