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