2015-02-05 32 views
0

我有一堆點{A,B,C,...,X},我想將它們的距離存儲在矩陣中。一個額外的複雜因素是從A到B的距離和不同於從B到A的距離,它們是不對稱的。在MongoDB中存儲矩陣作爲集合

我的目標是將這個矩陣存儲在MongoDB的一個集合中,但我真的不知道該怎麼做,這可能嗎?任何意見/指導,非常感謝。

+0

你可以提供你要保存的結構更完整的例子嗎?這些點是地理座標? – 2015-02-05 23:59:59

+0

@LeonardoDelfino點是地理座標;緯度和經度。我想存儲這些點之間的距離,對於任意兩點,從點A到點B的距離與從點B到點A的距離不一樣。本質上,我想要在mongo中存儲距離矩陣,我希望它能夠給它任意兩點(比方說B和D),然後檢索它們之間的距離。 – RegUser 2015-02-06 11:24:29

回答

0

出於好奇,你使用了什麼「距離」測量?從技術上講,除非始終使用d(X, Y) = d(Y, X),否則不能調用函數d(X, Y) a "distance"。球體上的點之間的距離是對稱的,因此您無法使用該指標。如果你想要做的是存儲和檢索值d(X, Y),只是存儲文檔一樣

{ 
    "from" : X, 
    "to" : Y, 
    "distance" : 691 
} 

其中XY是什麼樣的價值觀是適當的。放在{ "from" : 1, "to" : 1 }一個索引,然後定義

function d(X, Y) { 
    return db.distances.findOne({ "from" : X, "to" : Y }).distance 
} 
+0

謝謝!我只是從谷歌地圖API的距離 – RegUser 2015-02-09 12:32:38

0

MongoDB支持商店地理空間對象提供創建索引和執行查詢這些對象的特定方式。

看看:

http://docs.mongodb.org/manual/applications/geospatial-indexes/

,看看是否是你在找什麼。

+0

我不知道2Dsphere索引是如何工作的。基本上我有一個存儲所有地方(經度和緯度)的表格,但我想使用google maps API計算距離並將它們插入到Mongo中的不同集合中。 – RegUser 2015-02-06 12:06:17