我试图蒙戈shell脚本中执行以下命令不工作:为什么shardCollection命令蒙戈shell脚本
sh.shardCollection('mydb.collection', { shardKey : 1 });
但它不会做任何事情。
然而,当我从脚本执行:
print(sh.help())
我得到的所有的帮助选项。
这意味着'sh'变量也可以在mongo shell脚本中使用。
那么为什么我不能通过mongo shell脚本执行shardCollection?
编辑:感谢尼尔他的评论。这里是我的蒙戈shell脚本
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
无法正常工作。
阅读[文件](http://docs.mongodb.org/manual/reference/method/sh.shardCollection/#example),并制定出你都清楚做什么这里错了。 – 2014-09-13 08:59:31
我正在做与文档中提供的相同的事情。你能指出我在做什么错吗? – codeofnode 2014-09-13 09:16:36
什么是初学者的“shardKey”?不要从你实际想要的答案中抽象出来。显示您的示例文档,显示您的真实命令,显示您的实际错误。在目前的1200名代表你应该知道这一点,但没有做任何明智的需要。 – 2014-09-13 09:33:39