3 ms·
Check out this code for searching locally with mongo. It doesn't get simpler. Straight from geosay.com class GeosayController < ApplicationController def ap
by stewsnooze 16y ago
Check out this code for searching locally with mongo. It doesn't get simpler. Straight from geosay.com
class GeosayController < ApplicationController
def api
expires_in 1.minutes, :public => true
results = Tweet.near(params[:lat].to_f,params[:lon].to_f)
render :json => results
end
end
....
class Tweet
include MongoMapper::Document
def self.near(lat, lon)
self.all( :latlong => {'$near' => [lat, lon]}, :limit => 30)
end
end
- stewsnooze 16y agoWe chose mongodb after reading this page http://www.mongodb.org/display/DOCS/Geospatial+Indexing http://www.mongodb.org/display/DOCS/Geospatial+Indexing Before then we were looking at Postgres for its geo stuff and things like cassandra also.
- djb_hackernews 16y agoas someone building a location based service, why not just store the lat/long in a table column and query for < >? Is it that much more efficient to use a specialized product?
- dansingerman 16y agoOur understanding is mongodb should scale to tens of millions of rows better than a SQL database (which would be a nice problem to have) Once we made the decision to use mongodb, it made sense to use the built in near functionality, rather than roll it ourselves.
- djb_hackernews 16y agoIndeed. I am using Django to build my app and a mysql db with 2 float fields for lat/long. GeoDjango and GIS extensions for mysql seemed like over kill, plus I don't really know what I am doing but it seems to work. Django doesn't have very good support for mongo. Well, the django orm.
- dansingerman 16y agoTo be honest I can see absolutely no reason why you can't use floats as you describe and < , >. Depending on what you are doing it may be a little tricky due to lat/longs being angular values, but over small distances I think this can be largely ignored. (In geosay we have some front end code that sorts out the niceties of the angular stuff)