Một cách tốt để xác định cách sử dụng lệnh MongoDB shell là nhập lệnh không có dấu ngoặc đơn vào shell và thay vì chạy nó sẽ in mã nguồn cho lệnh. Vì vậy, nếu bạn chạy
ShardingTest
tại dấu nhắc lệnh, bạn sẽ thấy tất cả mã nguồn. Khoảng dòng 30, bạn sẽ thấy nhận xét này:
// Allow specifying options like :
// { mongos : [ { noprealloc : "" } ], config : [ { smallfiles : "" } ], shards : { rs : true, d : true } }
cung cấp cho bạn cú pháp chính xác để chuyển các tham số cấu hình cho mongos, config và shard (áp dụng cho mongods không phải bản sao cho tất cả các shard). Đó là, thay vì chỉ định một số cho các phân đoạn mà bạn chuyển vào một đối tượng. Tìm hiểu thêm về mã:
else if( isObject( numShards ) ){
tempCount = 0;
for( var i in numShards ) {
otherParams[ i ] = numShards[i];
tempCount++;
}
numShards = tempCount;
Thao tác này sẽ lấy một đối tượng và sử dụng các tài liệu con bên trong đối tượng làm tham số tùy chọn cho mỗi phân đoạn. Điều này dẫn đến, bằng cách sử dụng ví dụ của bạn:
cluster = new ShardingTest({shards : {d0:{smallfiles:''}, d1:{smallfiles:''}, d2:{smallfiles:''}}})
mà từ đầu ra tôi có thể thấy đang bắt đầu các phân đoạn bằng --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
Ngoài ra, vì bây giờ bạn đã có mã nguồn trước mặt, nên bạn có thể sửa đổi javascript để chuyển vào các tệp nhỏ theo mặc định.