SlideShare a Scribd company logo
GEOLOCATION IN
                                MONGODB
                             { name: ‘Shashank Tiwari’, web: ‘shanky.org’}




Wednesday, November 28, 12
WHO AM I?



                Entrepreneur, developer, author

                Most recent book: Professional NoSQL (Wiley, 2011)

                Co-founder :




Wednesday, November 28, 12
DEGREES OF MEASURE



                Latitude

                Longitude




Wednesday, November 28, 12
DEGREE OF LONGITUDE




Wednesday, November 28, 12
GEO IN MONGO




                Is a world in 2D




Wednesday, November 28, 12
MONGO DOC WITH LOC



                { loc : [37.407202, -122.10716] }

                { loc : { x: 37.407202, y: -122.10716} }

                { loc : { lat: 37.407202, lon: -122.10716} }




Wednesday, November 28, 12
INDEX



                db.places.ensureIndex( { loc : "2d" } )

                1 geospatial index per collection




Wednesday, November 28, 12
INDEX RANGE



                db.places.ensureIndex( { loc : "2d" } , { min : -500 , max :
                500 } )




Wednesday, November 28, 12
INDEX PRECISION



                db.places.ensureIndex( { loc : "2d" } , { bits : 26 } )

                Geo-hash precision of 26bits ~ 2 feet




Wednesday, November 28, 12
EXACT QUERIES



                > db.places.find({ loc : [ 37.407202, -122.10716 ]});

                { "_id" : ObjectId("50b69e66e6945f62a019f3a4"), "name" :
                "San Antonio Caltrain", "loc" : [ 37.407202, -122.10716 ] }




Wednesday, November 28, 12
EXPLAIN QUERY PLAN




                db.places.find({ loc : [ 37.407202, -122.10716 ]}).explain();




Wednesday, November 28, 12
COMPOUND INDEX




                db.places.ensureIndex( { loc : "2d", name : 1 } )




Wednesday, November 28, 12
NEAR QUERY



                db.places.find({ loc : { $near : [ 37.407202, -122.10716 ]}});

                Returns points sorted by distance




Wednesday, November 28, 12
WITH MAXDISTANCE


                db.places.find({ loc : { $near : [ 37.407202, -122.10716 ],
                $maxDistance : 0.05}});

                What is the unit of maxDistance? -- for latitude & longitude 1
                degree ~ 69 miles




Wednesday, November 28, 12
GEONEAR QUERY



                db.runCommand({ geoNear : "places", near : [37.407202,
                -122.10716], num : 5 });

                also gives the distance




Wednesday, November 28, 12
MORE WITH GEONEAR



                db.runCommand({ geoNear : "places", near : [37.407202,
                -122.10716], num : 5, type : “DO” });

                parameters: near, num, maxDistance, query




Wednesday, November 28, 12
WITHIN A BOX



                db.places.find({ loc : { $within : { $box : [[39.589821,
                -122.438831], [37.485200, -122.228438]] }}});




Wednesday, November 28, 12
WITHIN A CIRCLE



                db.places.find({ loc : { $within : { $center : [[39.589821,
                -122.438831], 10] }}});




Wednesday, November 28, 12
WITHIN A POLYGON




                Polygon shapes currently cannot be indexed




Wednesday, November 28, 12
SPHERICAL SUPPORT


                geoNear -- spherical : true

                $nearSphere

                $centerSphere

                Order is important, very important -- longitude, latitude




Wednesday, November 28, 12
MULTI LOCATIONS



                db.places.insert({ placesVisitedToday : [ { name : "San
                Antonio Caltrain", loc : [37.407202, -122.10716] }, { name :
                "Kixeye", loc : [37.7906672, -122.403256] } ] })




Wednesday, November 28, 12
QUERY MULTI LOC



                db.places.ensureIndex( { " placesVisitedToday.loc " : "2d"} )

                use uniqueDocs : true to get unique documents




Wednesday, November 28, 12
Wednesday, November 28, 12
Wednesday, November 28, 12
NEXT TALK



                More details and some about GIS too!

                SV MongoDB User Group @ Palo Alto -- January Meetup




Wednesday, November 28, 12
THANKS



                More questions? web: shanky.org | twitter : @tshanky

                Want to join the              alpha program?
                doaround.com




Wednesday, November 28, 12

More Related Content

PDF
Geolocation in MongoDB
PDF
Save System in Garden of the Sea: How to save the state of an open-ended gard...
PPTX
MongoDB GeoSpatial Feature
PPTX
511 Week 3
PPTX
Cookies
PPT
Geolocation and Cassandra at Physi
PPTX
Migration from SQL to MongoDB - A Case Study at TheKnot.com
PPTX
Document validation in MongoDB 3.2
Geolocation in MongoDB
Save System in Garden of the Sea: How to save the state of an open-ended gard...
MongoDB GeoSpatial Feature
511 Week 3
Cookies
Geolocation and Cassandra at Physi
Migration from SQL to MongoDB - A Case Study at TheKnot.com
Document validation in MongoDB 3.2

More from MongoDB (20)

PDF
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
PDF
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
PDF
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
PDF
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
PDF
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
PDF
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
PDF
MongoDB SoCal 2020: MongoDB Atlas Jump Start
PDF
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
PDF
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
PDF
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
PDF
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
PDF
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
PDF
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
PDF
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
PDF
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
PDF
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
PDF
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
PDF
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
Ad

Recently uploaded (20)

PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Electronic commerce courselecture one. Pdf
PPTX
Machine Learning_overview_presentation.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
Cloud computing and distributed systems.
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Per capita expenditure prediction using model stacking based on satellite ima...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Unlocking AI with Model Context Protocol (MCP)
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
A comparative analysis of optical character recognition models for extracting...
The Rise and Fall of 3GPP – Time for a Sabbatical?
Network Security Unit 5.pdf for BCA BBA.
Advanced methodologies resolving dimensionality complications for autism neur...
NewMind AI Weekly Chronicles - August'25-Week II
Chapter 3 Spatial Domain Image Processing.pdf
Electronic commerce courselecture one. Pdf
Machine Learning_overview_presentation.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
sap open course for s4hana steps from ECC to s4
Cloud computing and distributed systems.
Review of recent advances in non-invasive hemoglobin estimation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Spectroscopy.pptx food analysis technology
“AI and Expert System Decision Support & Business Intelligence Systems”
Ad

Geolocation in mongodb

  • 1. GEOLOCATION IN MONGODB { name: ‘Shashank Tiwari’, web: ‘shanky.org’} Wednesday, November 28, 12
  • 2. WHO AM I? Entrepreneur, developer, author Most recent book: Professional NoSQL (Wiley, 2011) Co-founder : Wednesday, November 28, 12
  • 3. DEGREES OF MEASURE Latitude Longitude Wednesday, November 28, 12
  • 5. GEO IN MONGO Is a world in 2D Wednesday, November 28, 12
  • 6. MONGO DOC WITH LOC { loc : [37.407202, -122.10716] } { loc : { x: 37.407202, y: -122.10716} } { loc : { lat: 37.407202, lon: -122.10716} } Wednesday, November 28, 12
  • 7. INDEX db.places.ensureIndex( { loc : "2d" } ) 1 geospatial index per collection Wednesday, November 28, 12
  • 8. INDEX RANGE db.places.ensureIndex( { loc : "2d" } , { min : -500 , max : 500 } ) Wednesday, November 28, 12
  • 9. INDEX PRECISION db.places.ensureIndex( { loc : "2d" } , { bits : 26 } ) Geo-hash precision of 26bits ~ 2 feet Wednesday, November 28, 12
  • 10. EXACT QUERIES > db.places.find({ loc : [ 37.407202, -122.10716 ]}); { "_id" : ObjectId("50b69e66e6945f62a019f3a4"), "name" : "San Antonio Caltrain", "loc" : [ 37.407202, -122.10716 ] } Wednesday, November 28, 12
  • 11. EXPLAIN QUERY PLAN db.places.find({ loc : [ 37.407202, -122.10716 ]}).explain(); Wednesday, November 28, 12
  • 12. COMPOUND INDEX db.places.ensureIndex( { loc : "2d", name : 1 } ) Wednesday, November 28, 12
  • 13. NEAR QUERY db.places.find({ loc : { $near : [ 37.407202, -122.10716 ]}}); Returns points sorted by distance Wednesday, November 28, 12
  • 14. WITH MAXDISTANCE db.places.find({ loc : { $near : [ 37.407202, -122.10716 ], $maxDistance : 0.05}}); What is the unit of maxDistance? -- for latitude & longitude 1 degree ~ 69 miles Wednesday, November 28, 12
  • 15. GEONEAR QUERY db.runCommand({ geoNear : "places", near : [37.407202, -122.10716], num : 5 }); also gives the distance Wednesday, November 28, 12
  • 16. MORE WITH GEONEAR db.runCommand({ geoNear : "places", near : [37.407202, -122.10716], num : 5, type : “DO” }); parameters: near, num, maxDistance, query Wednesday, November 28, 12
  • 17. WITHIN A BOX db.places.find({ loc : { $within : { $box : [[39.589821, -122.438831], [37.485200, -122.228438]] }}}); Wednesday, November 28, 12
  • 18. WITHIN A CIRCLE db.places.find({ loc : { $within : { $center : [[39.589821, -122.438831], 10] }}}); Wednesday, November 28, 12
  • 19. WITHIN A POLYGON Polygon shapes currently cannot be indexed Wednesday, November 28, 12
  • 20. SPHERICAL SUPPORT geoNear -- spherical : true $nearSphere $centerSphere Order is important, very important -- longitude, latitude Wednesday, November 28, 12
  • 21. MULTI LOCATIONS db.places.insert({ placesVisitedToday : [ { name : "San Antonio Caltrain", loc : [37.407202, -122.10716] }, { name : "Kixeye", loc : [37.7906672, -122.403256] } ] }) Wednesday, November 28, 12
  • 22. QUERY MULTI LOC db.places.ensureIndex( { " placesVisitedToday.loc " : "2d"} ) use uniqueDocs : true to get unique documents Wednesday, November 28, 12
  • 25. NEXT TALK More details and some about GIS too! SV MongoDB User Group @ Palo Alto -- January Meetup Wednesday, November 28, 12
  • 26. THANKS More questions? web: shanky.org | twitter : @tshanky Want to join the alpha program? doaround.com Wednesday, November 28, 12