Created
October 6, 2014 23:10
-
-
Save visualzhou/20b663c715f9c61dc80c to your computer and use it in GitHub Desktop.
mongo-perf 2d index near query test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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