这并不明显,但如果你跑步
sh.addTagRange()
如果具有相同的最小值(在您的情况下为1或100)和不同的最大值,则具有该最小值的现有标记范围将发生变化,基本上起到就地更新的作用(
addTagRange()
helper基本上运行
upsert
基于_id字段并进行一些健全性检查),这可以通过在没有括号的情况下运行它来看到:
mongos> sh.addTagRange
function ( ns, min, max, tag ) {
if ( bsonWoCompare( min, max ) == 0 ) {
throw new Error("min and max cannot be the same");
}
var config = db.getSisterDB( "config" );
config.tags.update( {_id: { ns : ns , min : min } } ,
{_id: { ns : ns , min : min }, ns : ns , min : min , max : max , tag : tag } ,
true );
sh._checkLastError( config );
}
要更改标记范围的最小值,这将不起作用-您需要删除并重新添加,或者需要手动更新
_id.min
子文档中的字段以及
min
字段,以避免您看到的不一致。我建议当前使用删除和重新添加选项,以避免混淆。这些命令将在稍后的版本中进行重构(尚未计划),我个人在
SERVER-6352
让这在未来变得不那么麻烦。