我已经使用$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
答案 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)