2015-02-05 73 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