Dobrym sposobem na określenie, jak używać polecenia powłoki MongoDB jest wpisanie polecenia bez nawiasów w powłoce, a zamiast uruchamiania wyświetli kod źródłowy polecenia. Więc jeśli uruchomisz
ShardingTest
w wierszu polecenia zobaczysz cały kod źródłowy. Około linii 30 zobaczysz ten komentarz:
// Allow specifying options like :
// { mongos : [ { noprealloc : "" } ], config : [ { smallfiles : "" } ], shards : { rs : true, d : true } }
co daje poprawną składnię do przekazywania parametrów konfiguracyjnych dla mongos, config i shards (które dotyczą mongodów bez zestawu replik dla wszystkich shardów). Oznacza to, że zamiast określać liczbę fragmentów przekazywanych w obiekcie. Kopanie dalej w kodzie:
else if( isObject( numShards ) ){
tempCount = 0;
for( var i in numShards ) {
otherParams[ i ] = numShards[i];
tempCount++;
}
numShards = tempCount;
Spowoduje to pobranie obiektu i użycie poddokumentów w obiekcie jako parametrów opcji dla każdego fragmentu. Prowadzi to do tego, używając twojego przykładu:
cluster = new ShardingTest({shards : {d0:{smallfiles:''}, d1:{smallfiles:''}, d2:{smallfiles:''}}})
które z wyjścia, które widzę, zaczyna odłamki za pomocą --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
Alternatywnie, ponieważ masz teraz kod źródłowy przed sobą, możesz zmodyfikować javascript, aby domyślnie przekazywał małe pliki.