0

我使用mongodb保存时空数据,文档项结构如下:

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

如果两个文档的不同定义为:

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 回答