2012-11-25 76 views
0

我使用MongoDB的保存時間和空間數據和文檔項目的結構如下:如何處理mongodb中的複雜查詢?

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

我如何可以查詢:

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

如果兩個文件的不同定義通過mongodb將文檔和結果按照它們與給定文檔的距離進行排序doc0 = {time:t0,geo:[x0,y0]}?

謝謝

+0

對於像這樣的複雜查詢,您可以使用[aggregation framework](http://docs.mongodb.org/manual/applications/aggregation/)。請參閱'$ add'和'$ subtract' [算術投影算子](http://docs.mongodb.org/manual/reference/aggregation/#arithmetic-operators)。 – JohnnyHK

回答

1

而不是手動計算距離,你可以信任mongodb與該任務。 Mongodb有built in geospatial query support

這應該是這樣的:

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

其結果將是接近給定位置[x0,y0]所有文件,通過該點的距離自動排序。