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