Храните ваши данные, чтобы они могли иметь геопространственную индексацию.
MongoDb имеет встроенную поддержку для этого. Тогда вы можете легко использовать встроенные запросы для
расстояние / близость.
Посмотрите на:
http://www.mongodb.org/display/DOCS/Geospatial+Indexing
*Querying
The index can be used for exact matches:
db.places.find( { loc : [50,50] } )
Of course, that is not very interesting. More important is a query to find points near another point, but not necessarily matching exactly:
db.places.find( { loc : { $near : [50,50] } } )
The above query finds the closest points to (50,50) and returns them sorted by distance (there is no need for an additional sort parameter). Use limit() to specify a maximum number of points to return (a default limit of 100 applies if unspecified):
db.places.find( { loc : { $near : [50,50] } } ).limit(20)
You can also use $near with a maximum distance
db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20)*