mongo中geospatial db的python等效查询

时间:2015-03-16 08:34:10

标签: python mongodb geospatial

我有像这样的mongo数据库

{ "_id" : ObjectId("55068cf8d77d293a1ca8475a"), 
  "category" : "City", 
  "loc" : { "type" : "Point", 
            "coordinates" : [ 88.789167, 22.407222 ] }, 
            "name" : "rajbari" 
          }
}

我已经创建了一个像这样的2dsphere索引

db.places.createIndex( { loc : "2dsphere" , category : -1, name: 1 } )

当我在mongo上查询时,我得到了理想的结果

db.places.find( { loc : { $geoWithin : { $centerSphere :[ [ 88.777778, 22.432778] , 3 / 3959 ] } } } )

这会从db中获取4行。

我需要为此创建一个python api,并编写了以下代码

def get_connection():
    connection = Connection()
    db = connection[database_name]
    collection = db[collection_name]
    return collection

central_points = [float(x) for x in request.GET.get('central-points').split(',')]
level = str(request.GET.get('zoom-level'))
places = get_connection()
points = places.find( { "loc" : { "$geoWithin" : { "$centerSphere" :[central_points ,level / 3959 ] } } } )

当我传递central_points

中的数据库中存在的实际坐标时,这也只取出了一行。

无法理解我做错了什么

1 个答案:

答案 0 :(得分:0)

可能有错误:

level = str(request.GET.get('zoom-level'))

var level在你的情况下应该是int或float。

level = int(request.GET.get('zoom-level'))

尝试纠正并再次运行。