MongoDBシェルコマンドの使用方法を判断する良い方法は、シェルに括弧なしでコマンドを入力することです。実行する代わりに、コマンドのソースコードが出力されます。したがって、
を実行するとShardingTest
コマンドプロンプトで、すべてのソースコードが表示されます。 30行目あたりに次のコメントが表示されます:
// Allow specifying options like :
// { mongos : [ { noprealloc : "" } ], config : [ { smallfiles : "" } ], shards : { rs : true, d : true } }
これにより、mongos、config、およびshards(すべてのシャードの非レプリカセットmongodsに適用されます)の構成パラメーターを渡すための正しい構文が提供されます。つまり、オブジェクトに渡すシャードの番号を指定する代わりに。コードをさらに掘り下げる:
else if( isObject( numShards ) ){
tempCount = 0;
for( var i in numShards ) {
otherParams[ i ] = numShards[i];
tempCount++;
}
numShards = tempCount;
これにより、オブジェクトが取得され、オブジェクト内のサブドキュメントが各シャードのオプションパラメータとして使用されます。これは、あなたの例を使用して、につながります:
cluster = new ShardingTest({shards : {d0:{smallfiles:''}, d1:{smallfiles:''}, d2:{smallfiles:''}}})
出力から、シャードを--smallfilesで開始していることがわかります:
shell: started program mongod --port 30000 --dbpath /data/db/test0 --smallfiles --setParameter enableTestCommands=1
shell: started program mongod --port 30001 --dbpath /data/db/test1 --smallfiles --setParameter enableTestCommands=1
shell: started program mongod --port 30002 --dbpath /data/db/test2 --smallfiles --setParameter enableTestCommands=1
または、ソースコードが目の前にあるので、デフォルトで小さなファイルを渡すようにJavaScriptを変更できます。