我試圖蒙戈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