28 lines
1.5 KiB
JavaScript
28 lines
1.5 KiB
JavaScript
t = db.geo_haystack3
|
|
t.drop()
|
|
|
|
t.insert({ pos : { long : 34, lat : 33 }})
|
|
t.insert({ pos : { long : 34.2, lat : 33.3 }, type : ["bar", "restaurant" ]})
|
|
t.insert({ pos : { long : 34.2, lat : 37.3 }, type : ["bar", "chicken" ]})
|
|
t.insert({ pos : { long : 59.1, lat : 87.2 }, type : ["baz", "office" ]})
|
|
t.ensureIndex({ pos : "geoHaystack", type : 1 }, { bucketSize : 1 })
|
|
|
|
// This only matches the first insert. What do we want? First 3 or just the first?
|
|
res = t.runCommand("geoSearch", { near : [33, 33], maxDistance : 6, search : {}, limit : 30 })
|
|
assert.eq(1, res.stats.n, "Right # of matches");
|
|
assert.eq(34, res.results[0].pos.long, "expected longitude");
|
|
assert.eq(33, res.results[0].pos.lat, "expected latitude");
|
|
|
|
// This matches the middle 2 of the 4 elements above.
|
|
res = t.runCommand("geoSearch", { near : [33, 33], maxDistance : 6, search : { type : "bar" },
|
|
limit : 2 })
|
|
assert.eq(2, res.stats.n, "Right # of matches");
|
|
assert.eq("bar", res.results[0].type[0], "expected value for type");
|
|
assert.eq("bar", res.results[1].type[0], "expected value for type");
|
|
assert.neq(res.results[0].type[1], res.results[1].type[1], "should get 2 diff results");
|
|
|
|
// This is a test for the limit being reached/only 1 returned.
|
|
res = t.runCommand("geoSearch", { near : [33, 33], maxDistance : 6, search : { type : "bar" },
|
|
limit : 1 })
|
|
assert.eq(1, res.stats.n, "Right # of matches");
|
|
assert.eq("bar", res.results[0].type[0], "expected value for type");
|