IAC 2024 - IA Fast Track to Search Focused AI Solutions
Spatial MongoDB, Node.JS, and Express - server-side JS for your application
1. Building Spatial Web Services
with MongoDB + NodeJS in
Less than 30 Minutes
Steven Citron-Pousty
PaaS Dust Spreader, Red Hat
@TheSteve0
1
2. Agenda
•Learn a little spatial
•Load some spatial data into mongo
•Do a query or two
•Repo for today’s code is here –
•https://github.com/openshift/openshift-mongo-node-
express-example
SIGN UP CODE:
mongoboulder
2
3. Assumptions
1)You already know that Node.JS + Mongo is like
chocolate and peanut butter
2)You can use the command line
3)You are comfortable with Mongo command line
4)Please ask questions – though since we only have 30
minutes they may have to wait until the end or after the
session
3
9. Spatial is fun
The spatial functionality Mongo currently has is:
1)Near
2)Containment
All of it is laid out on two pages:
http://docs.mongodb.org/manual/applications/geospatial-
indexes/
And
http://docs.mongodb.org/manual/core/geospatial-
indexes/
9
10. Good to know
1.Assumes coords. are between [-180 and 180)
2.Can handle any 2D coordinates
3.Has methods to handle curvature of the earth
(spherical)
10
11. How to make it work
1) Put your coordinates into an arrary
{ loc : [ 50 , 30 ] }
{ loc : { x : 50 , y : 30 } }
{ loc : { foo : 50 , y : 30 } }
{ loc : { lon : 40.739037, lat: 73.992964 } }
If you use spherical make sure to put [lon, lat]
2) Make a 2d index
db.places.ensureIndex( { loc : "2d" } )
There is also a Haystack index – buckets the world
11
12. Demo
1.I have a Node.JS app and a mongo instance running,
with spatial data and 2D index already created
2.Do some fun spatial and MongoDB work
3.Show you the web services
12
13. Conclusion
1.Spatial is easy and fun on Mongo
2.You can now build your own Foursquare or other
checkin application.
3.You can also build your own field data entry system.
4.You can build and deploy your application quickly
without having to think about infrastructure.
SIGN UP CODE:
mongoboulder
http://openshift.redhat.com
13