Я пытаюсь выполнить следующую команду в сценарии оболочки mongo:
sh.shardCollection('mydb.collection', { shardKey : 1 });
но это ничего не делает.
Однако, когда я выполняю скрипт:
print(sh.help())
Я получаю все варианты помощи.
Таким образом, переменная 'sh' также доступна в сценарии оболочки mongo.
тогда почему я не могу выполнить shardCollection через сценарий оболочки mongo?
РЕДАКТИРОВАТЬ: Спасибо Нилу за его комментарии. Вот мой сценарий оболочки монго.
db = connect("mydb");
print(db.help());
var cols = db.getCollectionNames();
var names = [
'a',
'b',
'c'
];
var forEachCol = function(i){
if(i === cols.length) return print('Sharding on collections Succesfull');
if(names.indexOf(cols[i]) !== -1) {
sh.shardCollection(cols[i], { shardKey : 1 });
}
forEachCol(i+1);
};
forEachCol(0);
Каждый из документов в каждой коллекции a,b,c
имеет поле "shardKey" (с индексом). Таким образом, «shardKey» помогает хранить документы с определенным shardKey на одном осколке.
теперь, когда я иду в оболочку монго и запускаю
db.printShardingStatus()
Я получаю вывод как
{ "_id" : "mydb", "partitioned" : false, "primary" : "shard0000" }
и шардинг для коллекции, не указанной здесь. Означает, что sh.shardCollection
не работает.
sh.shardCollection
. - person codeofnode   schedule 13.09.2014