2017-11-20 9 views
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

答えて

1

この問題は再現できません。限界はうまく動作します。 (正しいコレクションを表示するには)https://aka.ms/mongodb-feature-supportのサンプルドキュメントを使用し、ドキュメントのクエリに.limit(1)を追加してください。

db.volcanos.find limit(1):{{{{LocationGate:1000}、$ maxDistance:{1000000}}}){

+0

非常に奇妙なことに、私はほとんど同じクエリを使用しており、私は限界が無視されているのを見ることができます。私のDB上の locationプロパティは、次のようになります。 '\t \t "場所":{ \t \t \t "タイプ": "ポイント"、 \t \t \t "座標":[ \t \t \t \t 34.780659466136484、 \t \t \t \t 32.08260571073972 \t \t \t] \t \t} '多分それは形式の問題ですか? –

+0

これは、私のクエリが "location.coordinates"ではなく "location"にあるという事実に関連しているかもしれませんか? "location.coordinates"の結果は0です。 –

+0

は、minDistanceとmaxDistanceの値で遊んでいます。定義している形と重なっていない可能性があります。 – alekseys

関連する問題