Geospatial Indexing
Ryan Fischer
@ryanfischer20
Tuesday, November 15, 11
Slide 2
Slide 2 text
What is covered
The most amazing slides ever to be displayed
Getting Started with Geospatial Indexing
A real live working session of the most amazing code
How many times I say ‘um’
Tuesday, November 15, 11
Slide 3
Slide 3 text
geospatial
Tuesday, November 15, 11
Slide 4
Slide 4 text
simple
Tuesday, November 15, 11
Slide 5
Slide 5 text
SQL
SELECT * FROM Places
WHERE
acos(sin(1.3963) * sin(Lat) +
cos(1.3963) * cos(Lat) * cos(Lon -
(-0.6981))) * 6371 <= 1000;
Tuesday, November 15, 11
how do you want to
search?
Tuesday, November 15, 11
Slide 8
Slide 8 text
Exact Queries
Search by closest points
Tuesday, November 15, 11
Slide 9
Slide 9 text
Query within a rectangle
Circle with a center point and radius
Search within a polygon ( >= 1.9 )
Bound Queries
Tuesday, November 15, 11
Slide 10
Slide 10 text
The earth is round
(seriously)
Tuesday, November 15, 11
Slide 11
Slide 11 text
Tuesday, November 15, 11
Slide 12
Slide 12 text
Tuesday, November 15, 11
Slide 13
Slide 13 text
Spherical Model
Use decimal degrees - 42.53
Use [longitude, latitude] as ordering
Use radians for distance
$nearSphere and $centerSphere
Tuesday, November 15, 11
Slide 14
Slide 14 text
geoNear
returns distance for object
db.runCommand({ geoNear: "persons", near:
[50,50] })
Tuesday, November 15, 11
Slide 15
Slide 15 text
Multi-location Documents
objects can contain sub-objects for multiple locations
can show up more than once in location queries
Tuesday, November 15, 11
Slide 16
Slide 16 text
Sharding
Now supported
Can only use geoNear command
MongoDB is still young
Tuesday, November 15, 11
Slide 17
Slide 17 text
MongoDB meets Ruby
Tuesday, November 15, 11
Slide 18
Slide 18 text
The End
Follow me - @ryanfischer20
Tuesday, November 15, 11