如何在mongodb中处理复杂的查询?

时间:2012-11-25 17:17:09

标签: mongodb sorting pymongo

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

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

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

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

如何通过mongodb查询文档,并按照与给定文档的距离对结果进行排序doc0 = {time:t0,geo:[x0,y0]}?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以信任mongodb与该任务,而不是手动计算距离。 Mongodb有built in geospatial query support

这看起来像这样:

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

结果将是给定位置[x0,y0]附近的所有文档,按距离到该点自动排序。