我使用mongodb保存时间和空间数据,文档项的结构如下:
doc = { time:t,
geo:[x,y]
}
如果将两个文档的不同定义为:
dist(doc1, doc2) = |t1-t2| + |x1-x2| + |y1 - y2|
如何通过mongodb查询文档,并按照与给定文档的距离对结果进行排序doc0 = {time:t0,geo:[x0,y0]}?
谢谢
答案 0 :(得分:1)
您可以信任mongodb与该任务,而不是手动计算距离。 Mongodb有built in geospatial query support。
这看起来像这样:
db.docs.find( {
"time": "t0",
"geo" : { $near : [x0,y0] }
} ).limit(20)
结果将是给定位置[x0,y0]
附近的所有文档,按距离到该点自动排序。