0

私は mongo の "$near" クエリを使用しています。期待どおりに機能し、多くの時間を節約できます。

ここで、もっと複雑なことを実行する必要があります。地理空間情報 (異常なことは何もありません: 緯度と経度のみ) と時間を含む "チェックイン" (四角表記を使用しましょう) のコレクションがあるとします。2 人がチェックインした場合、「お互いに近かった」チェックインを見つけるにはどうすればよいですか? 例: 「1/23/12 あなたは 100 メートル離れていました」

最も簡単な解決策は、最初のユーザーによるすべてのチェックインを選択し、フレームワーク側で最初のユーザーのチェックインごとに最も近いチェックインを見つけることです (私は ruby​​ を使用します)。しかし、それは最も効率的なソリューションでしょうか? もっと良いアイデアはありますか?ある種の特別なインデックスが必要になる可能性がありますか?

ベスト、ローマ

4

1 に答える 1

1

MongoDB GeoSpatial インデックスは、$near と $within の 2 種類のクエリを提供します。$near クエリは、要求されたポイントの特定の範囲内にあるデータベース内のすべてのポイントを返しますが、$within クエリは、特定の領域 (ボックス、円、または任意の多角形) の内側にあるデータベース内のすべてのポイントを一覧表示します。

MongoDB は現在、別のポイント セットのメンバーから特定の距離内にあるすべてのポイントを返すクエリを提供していません。

おそらく、user1 からのポイント データを使用して「関心のある領域」を表すポリゴンを構築し、$within クエリを使用して、その領域内で他の人によるチェックインがあったかどうかを確認できます。場所と日付の複合インデックスを使用すると、特定の日にそのエリア内にいた人々にクエリを制限することもできます.

参考文献:

于 2012-07-24T20:37:02.463 に答える