我目前正在学习mongodb。我有一个在student_id键上分片的集合。在尝试使用分片集合上的边界执行split命令时,我得到以下异常“ exception:Chunk map指向不正确的块”
mongos> db.runCommand( { split: "test.grades" , bounds: [ Object(0), Object(10) ] } )
{ "code" : 13141, "ok" : 0, "errmsg" : "exception: Chunk map pointed to incorrect chunk" }
注意:我此时尚未加载数据,这意味着尚未进行任何拆分。
我能够通过使用绑定的替代方法来实现这一点,例如:
db.runCommand( { split: "test.grades" , middle:{student_id:10000} } )
我也知道'标签识别分片'以及它如何用于这种特殊情况。我唯一无法理解的是为什么拆分不使用'bounds'选项。
任何指针都将不胜感激!
答案 0 :(得分:1)
orid是正确的。要按边界分割,必须使用散列分片键,并且只能在现有块的最大值和最小值上使用它。在您的情况下,数据尚未出现,因此没有现有的块。
同样要使用边界,您需要指定一个如下的键:
db.runCommand( { split: "test.grades" , bounds: [ {student_id: Object(0)}, {student_id: Object(10)} ] } )