MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Definir smallfiles no ShardingTest


Uma boa maneira de determinar como usar um comando shell do MongoDB é digitar o comando sem os parênteses no shell e, em vez de executá-lo, imprimirá o código-fonte do comando. Então, se você correr
ShardingTest

no prompt de comando, você verá todo o código-fonte. Por volta da linha 30, você verá este comentário:
    // Allow specifying options like :
    // { mongos : [ { noprealloc : "" } ], config : [ { smallfiles : "" } ], shards : { rs : true, d : true } }

que fornece a sintaxe correta para passar parâmetros de configuração para mongos, config e shards (que se aplicam aos mongods não replicaset para todos os shards). Ou seja, em vez de especificar um número para shards, você passa em um objeto. Indo mais longe no código:
else if( isObject( numShards ) ){
            tempCount = 0;
            for( var i in numShards ) {
                otherParams[ i ] = numShards[i];
                tempCount++;
            }

            numShards = tempCount;

Isso pegará um objeto e usará os subdocumentos dentro do objeto como parâmetros de opção para cada estilhaço. Isso leva a, usando seu exemplo:
cluster = new ShardingTest({shards : {d0:{smallfiles:''}, d1:{smallfiles:''}, d2:{smallfiles:''}}})

que da saída que posso ver está iniciando os fragmentos com --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

Como alternativa, já que agora você tem o código-fonte à sua frente, você pode modificar o javascript para passar smallfiles por padrão.