Order results by their distance from the given point, optionally with range limits in meters.
		
		Geospatial operator: {$near: {...}}
		Documentation: https://docs.mongodb.com/manual/reference/operator/query/near/#op._S_near
		
			{
				$near: {
					$geometry: <center; Point or (long, lat)>,
					$minDistance: <min; distance in meters>,
					$maxDistance: <max; distance in meters>
				}
			}
		
		Geospatial operator: {$nearSphere: {...}}
		Documentation: https://docs.mongodb.com/manual/reference/operator/query/nearSphere/#op._S_nearSphere
		
			{
				$nearSphere: {
					$geometry: <center; Point or (long, lat)>,
					$minDistance: <min; distance in meters>,
					$maxDistance: <max; distance in meters>
				}
			}

def near(self, center, sphere=False, min=None, max=None):
		"""Order results by their distance from the given point, optionally with range limits in meters.
		
		Geospatial operator: {$near: {...}}
		Documentation: https://docs.mongodb.com/manual/reference/operator/query/near/#op._S_near
		
			{
				$near: {
					$geometry: <center; Point or (long, lat)>,
					$minDistance: <min; distance in meters>,
					$maxDistance: <max; distance in meters>
				}
			}
		
		Geospatial operator: {$nearSphere: {...}}
		Documentation: https://docs.mongodb.com/manual/reference/operator/query/nearSphere/#op._S_nearSphere
		
			{
				$nearSphere: {
					$geometry: <center; Point or (long, lat)>,
					$minDistance: <min; distance in meters>,
					$maxDistance: <max; distance in meters>
				}
			}
		"""
		
		from marrow.mongo.geo import Point
		
		near = {'$geometry': Point(*center)}
		
		if min:
			near['$minDistance'] = float(min)
		
		if max:
			near['$maxDistance'] = float(max)
		
		return Filter({self._name: {'$nearSphere' if sphere else '$near': near}})