0

我目前正在学习mongodb。我有一个在 student_id 键上分片的集合。尝试在分片集合上执行带有边界的拆分命令时,出现以下异常“异常:块映射指向不正确的块

mongos> db.runCommand( { split: "test.grades" , bounds: [ Object(0), Object(10) ] } )

{ "code" : 13141, "ok" : 0, "errmsg" : "exception: Chunk map pointed to incorrect chunk" }

注意:此时我还没有加载数据,这意味着没有拆分已经到位。

我可以通过使用 bound 的替代方法来完成这项工作,例如:

db.runCommand( { split: "test.grades" , middle:{student_id:10000} } )

我也知道“标签感知分片”以及它如何用于这种特殊情况。我唯一无法弄清楚的是为什么拆分不使用“边界”选项。

任何指针将不胜感激!

4

1 回答 1

1

orid是正确的。要按边界拆分,您必须使用散列分片键,并且您只能在现有块的最大值和最小值上使用它。在您的情况下,数据尚不存在,因此不存在现有块。

同样要使用边界,您需要指定这样的键:

db.runCommand( { split: "test.grades" , bounds: [ {student_id: Object(0)}, {student_id: Object(10)} ] } )
于 2013-09-17T15:53:24.520 回答