1

ちょっと再考!

よくわからないクエリの最適化に関する質問があります。geoLocation と時間を扱います。私はたくさんのイベントを持ってstartTimeendTimeますlocation. まだ発生していない特定の場所の近くで発生しているイベントを取得したい場合は、次の 2 つの方法のいずれかを実行できます。

  • 終了時間に基づいて、まだ発生していないすべてのイベントを取得してフィルター処理し、それらすべてのイベントの場所を計算して、指定された半径のイベントのみを返すことができます。
  • コマンド (期限切れのすべてのイベントを返す) を使用getNearest()して、まだ発生していないイベントを除外できます。このアプローチに関する私の心配の 1 つは、返されるgetNearest()数を指定することですが、基本的には指定された半径内にすべてが必要なので、まだ発生していないイベントを見逃すことはありません。

このための最速/最も効率的なクエリをどのように把握できるかわかりません。

私にとって最良の選択肢は、まだ発生していないすべてのイベントをフィルタリングして取得し、 getNearest() を使用してインデックスを利用することです。しかし、フィルタリングされたセットで get Nearest を呼び出すことができます。助けてください!?!?!

4

1 に答える 1

1

半径内のすべてのイベントを取得するには、 とgetIntersecting()一緒に使用することをお勧めしr.circleます。これは よりも効率的であるだけでなくgetNearest、返されるドキュメントの数に制限がありません。

r.circle生成されたポリゴンが頂点間の指定された半径よりもわずかに小さくなるという事実を考慮して、渡す半径をわずかに大きくする必要がある場合があります。

于 2016-02-15T21:10:24.940 に答える