在mongodb中使用$ nearSphere + limit查找查询

时间:2017-11-20 17:29:27

标签: mongodb mongodb-query pymongo azure-cosmosdb pymongo-2.x

我已经使用$nearSphere创建了一个查询,并且我意识到我有时会获得巨大数量的结果(1000+),这会影响我的应用的效果。

我尝试使用.limit(),但查询似乎忽略了它。 我也尝试使用batch_size(),它似乎不会影响返回的结果数。

是否存在任何形式的黑客攻击或限制返回结果的方法? 我想过用迭代器执行,这就是我所做的,它对性能来说似乎不太好:

for r in xrange(0,limit):
        print res.next()

查询本身非常简单:

query = {"location": {
    "$nearSphere": {"$geometry": {"type": "Point", "coordinates"
     [geo['lat'], geo['lng']]}, "$maxDistance": 500}}}


coll.find(query).limit(4).batch_size(4)

我在Azure Cosmos-db上使用Mongodb API

1 个答案:

答案 0 :(得分:1)

我不能重复这个问题。限制工作正常。尝试使用https://aka.ms/mongodb-feature-support中的示例文档(在同一集合中制作几个副本)和来自文档的查询,并将.limit(1)附加到它以查看正确的行为:

db.volcanos.find({“Location.coordinates”:{$ nearSphere:{$ geometry:{type:“Point”,coordinates:[ - 121,46]},$ minDistance:1000,$ maxDistance:1000000 }}}。)limit(1)