Skip to content

Instantly share code, notes, and snippets.

@visualzhou
Created October 6, 2014 23:10
Show Gist options
  • Save visualzhou/20b663c715f9c61dc80c to your computer and use it in GitHub Desktop.
Save visualzhou/20b663c715f9c61dc80c to your computer and use it in GitHub Desktop.
mongo-perf 2d index near query test
if ( typeof(tests) != "object" )
tests = [];
// generate a grid map from (x1, y1) to (x2, y2)`
function generateGridMap(collection, x1, y1, x2, y2) {
for( var i = x1; i < ( x2 + 1); i++) {
for(var j = y1; j < (y2 + 1); j++) {
collection.insert({loc: [i, j]});
}
}
}
// geoNear
tests.push( { name: "Geo.near.2d.findOne.center",
pre: function( collection ) {
collection.drop();
collection.ensureIndex({loc: "2d"});
generateGridMap(collection, -50, -50, 50, 50);
},
ops: [
{ op: "findOne", query: {loc: { $near: [0.1, 0.1]} } },
{ op: "findOne", query: {loc: { $near: [0.05, 0.05]} } },
{ op: "findOne", query: {loc: { $near: [0.02, 0.02]} } },
{ op: "findOne", query: {loc: { $near: [0.01, 0.01]} } },
{ op: "findOne", query: {loc: { $near: [0.005, 0.005]} } },
{ op: "findOne", query: {loc: { $near: [0.002, 0.002]} } },
{ op: "findOne", query: {loc: { $near: [0.001, 0.001]} } },
{ op: "findOne", query: {loc: { $near: [0.0005, 0.0005]} } },
{ op: "findOne", query: {loc: { $near: [0.0002, 0.0002]} } },
{ op: "findOne", query: {loc: { $near: [0.0001, 0.0001]} } },
{ op: "findOne", query: {loc: { $near: [0.00005, 0.00005]} } },
{ op: "findOne", query: {loc: { $near: [0.00002, 0.00002]} } },
{ op: "findOne", query: {loc: { $near: [0.00001, 0.00001]} } },
{ op: "findOne", query: {loc: { $near: [0.000005, 0.000005]} } },
{ op: "findOne", query: {loc: { $near: [0.000002, 0.000002]} } },
{ op: "findOne", query: {loc: { $near: [0.000001, 0.000001]} } },
{ op: "findOne", query: {loc: { $near: [0.0000005, 0.0000005]} } },
{ op: "findOne", query: {loc: { $near: [0.0000002, 0.0000002]} } },
{ op: "findOne", query: {loc: { $near: [0.0000001, 0.0000001]} } },
{ op: "findOne", query: {loc: { $near: [0.00000005, 0.00000005]} } },
{ op: "findOne", query: {loc: { $near: [0.00000002, 0.00000002]} } },
{ op: "findOne", query: {loc: { $near: [0.00000001, 0.00000001]} } },
{ op: "findOne", query: {loc: { $near: [0.000000005, 0.000000005]} } },
{ op: "findOne", query: {loc: { $near: [0.000000002, 0.000000002]} } },
{ op: "findOne", query: {loc: { $near: [0.000000001, 0.000000001]} } },
{ op: "findOne", query: {loc: { $near: [0.0000000005, 0.0000000005]} } },
{ op: "findOne", query: {loc: { $near: [0.0000000002, 0.0000000002]} } },
{ op: "findOne", query: {loc: { $near: [0.0000000001, 0.0000000001]} } },
{ op: "findOne", query: {loc: { $near: [0.00000000005, 0.00000000005]} } },
{ op: "findOne", query: {loc: { $near: [0.00000000002, 0.00000000002]} } },
{ op: "findOne", query: {loc: { $near: [0.00000000001, 0.00000000001]} } },
] } );
tests.push( { name: "Geo.near.2d.findOne.offcenter",
pre: function( collection ) {
collection.drop();
collection.ensureIndex({loc: "2d"});
generateGridMap(collection, -50, -50, 50, 50);
},
ops: [
{ op: "findOne", query: {loc: { $near: [20.1, 20.1]} } },
{ op: "findOne", query: {loc: { $near: [20.05, 20.05]} } },
{ op: "findOne", query: {loc: { $near: [20.02, 20.02]} } },
{ op: "findOne", query: {loc: { $near: [20.01, 20.01]} } },
{ op: "findOne", query: {loc: { $near: [20.005, 20.005]} } },
{ op: "findOne", query: {loc: { $near: [20.002, 20.002]} } },
{ op: "findOne", query: {loc: { $near: [20.001, 20.001]} } },
{ op: "findOne", query: {loc: { $near: [20.0005, 20.0005]} } },
{ op: "findOne", query: {loc: { $near: [20.0002, 20.0002]} } },
{ op: "findOne", query: {loc: { $near: [20.0001, 20.0001]} } },
{ op: "findOne", query: {loc: { $near: [20.00005, 20.00005]} } },
{ op: "findOne", query: {loc: { $near: [20.00002, 20.00002]} } },
{ op: "findOne", query: {loc: { $near: [20.00001, 20.00001]} } },
{ op: "findOne", query: {loc: { $near: [20.000005, 20.000005]} } },
{ op: "findOne", query: {loc: { $near: [20.000002, 20.000002]} } },
{ op: "findOne", query: {loc: { $near: [20.000001, 20.000001]} } },
{ op: "findOne", query: {loc: { $near: [20.0000005, 20.0000005]} } },
{ op: "findOne", query: {loc: { $near: [20.0000002, 20.0000002]} } },
{ op: "findOne", query: {loc: { $near: [20.0000001, 20.0000001]} } },
{ op: "findOne", query: {loc: { $near: [20.00000005, 20.00000005]} } },
{ op: "findOne", query: {loc: { $near: [20.00000002, 20.00000002]} } },
{ op: "findOne", query: {loc: { $near: [20.00000001, 20.00000001]} } },
{ op: "findOne", query: {loc: { $near: [20.000000005, 20.000000005]} } },
{ op: "findOne", query: {loc: { $near: [20.000000002, 20.000000002]} } },
{ op: "findOne", query: {loc: { $near: [20.000000001, 20.000000001]} } },
{ op: "findOne", query: {loc: { $near: [20.0000000005, 20.0000000005]} } },
{ op: "findOne", query: {loc: { $near: [20.0000000002, 20.0000000002]} } },
{ op: "findOne", query: {loc: { $near: [20.0000000001, 20.0000000001]} } },
{ op: "findOne", query: {loc: { $near: [20.00000000005, 20.00000000005]} } },
{ op: "findOne", query: {loc: { $near: [20.00000000002, 20.00000000002]} } },
{ op: "findOne", query: {loc: { $near: [20.00000000001, 20.00000000001]} } },
] } );
/*
tests.push( { name: "Geo.near.2d.find100.center",
pre: function( collection ) {
collection.drop();
collection.ensureIndex({loc: "2d"});
generateGridMap(collection, -50, -50, 50, 50);
},
ops: [
{ op: "find", limit:100, query: {loc: { $near: [0.1, 0.1]} } }
] } );
tests.push( { name: "Geo.near.2d.find100.offcenter",
pre: function( collection ) {
collection.drop();
collection.ensureIndex({loc: "2d"});
generateGridMap(collection, -50, -50, 50, 50);
},
ops: [
{ op: "find", limit:100, query: {loc: { $near: [-20.1, 20.1]} } }
] } );
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment