1

我创建了一个查询,$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

4

1 回答 1

1

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

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

于 2017-11-21T00:32:05.617 回答