// Cannot implicitly shard accessed collections because of extra shard key index in sharded // collection. // @tags: [assumes_no_implicit_index_creation] t = db.geo1; t.drop(); idx = { loc: "2d", zip: 1 }; t.insert({zip: "06525", loc: [41.352964, 73.01212]}); t.insert({zip: "10024", loc: [40.786387, 73.97709]}); assert.writeOK(t.insert({zip: "94061", loc: [37.463911, 122.23396]})); // test "2d" has to be first assert.eq(1, t.getIndexKeys().length, "S1"); t.ensureIndex({zip: 1, loc: "2d"}); assert.eq(1, t.getIndexKeys().length, "S2"); t.ensureIndex(idx); assert.eq(2, t.getIndexKeys().length, "S3"); assert.eq(3, t.count(), "B1"); assert.writeError(t.insert({loc: [200, 200]})); assert.eq(3, t.count(), "B3"); // test normal access wb = t.findOne({zip: "06525"}); assert(wb, "C1"); assert.eq("06525", t.find({loc: wb.loc}).hint({"$natural": 1})[0].zip, "C2"); assert.eq("06525", t.find({loc: wb.loc})[0].zip, "C3"); // assert.eq( 1 , t.find( { loc : wb.loc } ).explain().nscanned , "C4" ) // test config options t.drop(); t.ensureIndex({loc: "2d"}, {min: -500, max: 500, bits: 4}); assert.writeOK(t.insert({loc: [200, 200]}));