Можеш. Възможно е предварително разделяне на парчета ръчно, това е описано тук:https://www. mongodb.org/display/DOCS/Splitting+Chunks
Помислете внимателно как разделяте вашите парчета. Ако го направите зле, можете да получите много проблеми с производителността, но ако знаете достатъчно за ключовете си, можете да спечелите много.
Ако го направите, вероятно искате да изключите балансира:
> use config
> db.settings.update({_id: "balancer"}, {$set: {stopped: true}}, true);
(това е описано тук:https://www.mongodb.org/display/DOCS /Sharding+Administration )
Това е пример за това как можете да го направите. В зависимост от това какво точно искате да направите, ще трябва да го модифицирате (предполагам, че вашият шард ключ не е с име x , например и диапазонът ви не е от -1000 до 2000).
> use admin
> db.runCommand({split: "my_db.my_coll", middle: {x: 0}})
> db.runCommand({split: "my_db.my_coll", middle: {x: 1000}})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: -1}, to: "shard_1_name"})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: 0}, to: "shard_2_name"})
> db.runCommand({movechunk: "my_db.my_coll", find: {x: 1000}, to: "shard_3_name"})
split командите създават парчетата. Всяка команда разделя частта, съдържаща средната стойност, на две, така че първата разделя частта, съдържаща min_value -> max_value в min_value -> 0 и 0 -> max_value . След това втората команда разделя парчето, съдържащо 1000, второто парче, създадено от предишната команда, на две нови парчета. След тази команда имате три части:
min_value -> 00 -> 10001000 -> max_value
Следните три команди преместват тези парчета в отделни фрагменти. В документите се казва, че командата ще премести частта, съдържаща стойността в find , така че избрах три стойности, за които знам, че са в различни части, и ги използвах (има символ в BSON за min_key и max_key , но не съм сигурен как да го използвам правилно в този контекст).
Прочетете и тази страница https://www.mongodb.org/display/DOCS/Moving +Чънкове