Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB:分片系统无法强制执行群集范围的唯一索引_Mongodb_Mongodb Indexes - Fatal编程技术网

MongoDB:分片系统无法强制执行群集范围的唯一索引

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

从mongoDB文档()我正在阅读

除非 唯一字段位于碎片键中

我不是舒尔,无法很好地理解。 如果我有以下唯一索引 {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}的唯一性是否在所有集群中都得到尊重