|
var st = new ShardingTest({
|
shards: {rs0: {nodes: 1}, rs1: {nodes: 1}},
|
mongos: 1,
|
});
|
|
var dbName = "wc-test";
|
var mongos = st.s;
|
var db = mongos.getDB(dbName);
|
var collName = 'leaves';
|
var coll = db[collName];
|
function createShards() {
|
var numberDoc = 20;
|
db.adminCommand({movePrimary: db.toString(), to: st._shardNames[0]});
|
db.adminCommand({enablesharding: db.toString()});
|
coll.ensureIndex({x: 1}, {unique: true});
|
db.adminCommand({shardCollection: coll.toString(), key: {x: 1}});
|
st.configRS.awaitLastOpCommitted();
|
db.adminCommand({split: coll.getFullName(), middle: {x: numberDoc / 2}});
|
|
db.adminCommand({
|
moveChunk: coll.getFullName(),
|
find: {x: numberDoc / 2},
|
to: st._shardNames[1],
|
});
|
|
for (var i = 0; i < numberDoc; i++) {
|
coll.insert({x: i});
|
}
|
assert.eq(coll.count(), numberDoc);
|
}
|
|
createShards();
|
coll.insert({x: -3, tags: ["a", "b"]});
|
coll.insert({x: -7, tags: ["b", "c"]});
|
coll.insert({x: 23, tags: ["c", "a"]});
|
coll.insert({x: 27, tags: ["b", "c"]});
|
|
printjson(db.runCommand({
|
mapReduce: collName,
|
map: function() {
|
if(!this.tags) {
|
return;
|
}
|
this.tags.forEach(function(z) {
|
emit(z, 1);
|
});
|
},
|
reduce: function(key, values) {
|
return {
|
count: values.length
|
};
|
},
|
out: {inline: 1}
|
}));
|