0

mongodb を使用して時空間データを保存します。ドキュメント アイテムは次のように構成されます。

doc = { time:t,
        geo:[x,y]
      }

2 つのドキュメントの違いが次のように定義されている場合:

dist(doc1, doc2) = |t1-t2| + |x1-x2| + |y1 - y2|

mongodb でドキュメントをクエリし、特定のドキュメント doc0 ={ time:t0, geo:[x0,y0] } までの距離で結果を並べ替えるにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

距離を手動で計算する代わりに、mongodb にそのタスクを任せることができます。Mongodb には、地理空間クエリのサポートが組み込まれています。

これは次のようになります。

db.docs.find( { 
  "time": "t0", 
  "geo" : { $near : [x0,y0] } 
} ).limit(20)

結果は、指定された場所の近くにあるすべてのドキュメントであり、[x0,y0]そのポイントまでの距離によって自動的に並べ替えられます。

于 2012-11-25T20:50:51.233 に答える