Я пытаюсь добиться шардинга, который похож на следующий пример:
date | item_id | zone
-------------------+------------------+------------
MinKey...20180827 | MinKey...MaxKey | "archive"
20180827...MaxKey | 0...100 | "zone_1"
20180827...MaxKey | 100...200 | "zone_2"
20180827...MaxKey | 200...300 | "zone_3"
(Мне все равно, что происходит с документами с датой 20180827 и выше и item_id ниже 0 или выше300).
Я пытаюсь использовать {date: 1, item_id: 1}
ключ шардинга:
sh.shardCollection('mydb.mycollection', {date: 1, item_id: 1})
sh.addTagRange(
'mydb.mycollection',
{date: MinKey, item_id: MinKey},
{date: NumberInt(20180827), item_id: MaxKey},
'archive'
) // this succeeds
sh.addTagRange(
'mydb.mycollection',
{date: NumberInt(20180827), item_id: NumberInt(0)},
{date: MaxKey, item_id: NumberInt(100)},
'zone_1'
) // this fails with error that the ranges overlap
Вторая команда завершается с ошибкой «RangeOverlapConflict».Что я делаю не так?