From 72041be4221e43eda54795f6956653622bb74988 Mon Sep 17 00:00:00 2001 From: Adrian Short Date: Tue, 26 Jun 2012 12:36:11 +0100 Subject: [PATCH] Added geospatial index and search --- app/models/post.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/models/post.rb b/app/models/post.rb index 50cf3db..59d1055 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -10,5 +10,17 @@ class Post key :loc, Hash # { lng, lat } timestamps! + ensure_index [[:loc, '2d']] + belongs_to :feed + + EARTH_RADIUS_KM = 6378.0 + + def self.near(lat, lng, radius_km) + all( + :loc => { + '$nearSphere' => [ lng, lat ], + '$maxDistance' => radius_km / EARTH_RADIUS_KM + }) + end end