(function() { 'use strict'; // Values have to be sorted - you must have exactly 6 values in each array var types = [ { name: "string", values: [ "allan", "bob", "eliot", "joe", "mark", "sara" ], keyfield: "k" }, { name: "double", values: [ 1.2, 3.5, 4.5, 4.6, 6.7, 9.9 ], keyfield: "a" }, { name: "date", values: [ new Date(1000000), new Date(2000000), new Date(3000000), new Date(4000000), new Date(5000000), new Date(6000000) ], keyfield: "a" }, { name: "string_id", values: [ "allan", "bob", "eliot", "joe", "mark", "sara" ], keyfield: "_id" }, { name: "embedded 1", values: [ "allan", "bob", "eliot", "joe", "mark", "sara" ], keyfield: "a.b" }, { name: "embedded 2", values: [ "allan", "bob", "eliot", "joe", "mark", "sara" ], keyfield: "a.b.c" }, { name: "object", values: [ {a:1, b:1.2}, {a:1, b:3.5}, {a:1, b:4.5}, {a:2, b:1.2}, {a:2, b:3.5}, {a:2, b:4.5} ], keyfield: "o" }, { name: "compound", values: [ {a:1, b:1.2}, {a:1, b:3.5}, {a:1, b:4.5}, {a:2, b:1.2}, {a:2, b:3.5}, {a:2, b:4.5} ], keyfield: "o", compound: true }, { name: "oid_id", values: [ ObjectId(), ObjectId(), ObjectId(), ObjectId(), ObjectId(), ObjectId() ], keyfield: "_id" }, { name: "oid_other", values: [ ObjectId(), ObjectId(), ObjectId(), ObjectId(), ObjectId(), ObjectId() ], keyfield: "o" }, ]; var s = new ShardingTest({ name: "key_many", shards: 2 }); assert.commandWorked(s.s0.adminCommand({ enableSharding: 'test' })); s.ensurePrimaryShard('test', 'shard0001'); var db = s.getDB('test'); var primary = s.getServer("test").getDB("test"); var secondary = s.getOther(primary).getDB("test"); var curT; function makeObjectDotted(v) { var o = {}; if (curT.compound) { var prefix = curT.keyfield + '.'; if (typeof(v) == 'object') { for (var key in v) o[prefix + key] = v[key]; } else { for (var key in curT.values[0]) o[prefix + key] = v; } } else { o[curT.keyfield] = v; } return o; } function makeObject(v) { var o = {}; var p = o; var keys = curT.keyfield.split('.'); for(var i=0; i