2015-02-05 5 views
0

У меня есть куча точек {A, B, C, ...., X}, и я хочу сохранить их расстояния в матрице. Еще одно осложнение состоит в том, что расстояние от А до В и не такое же, как расстояние от В до А, они асимметричны.Сохранение матрицы в виде коллекции в MongoDB

Моя цель - сохранить эту матрицу в коллекции в MongoDB, но я действительно не знаю, как это возможно? любые советы/рекомендации очень ценятся.

+0

Вы можете предоставить более полный пример структуры, которую вы хотите сохранить? Эти точки являются географическими координатами? –

+0

@ LeonardoDelfino Точками являются географические координаты; широты и долготы. Я хочу сохранить расстояния между этими точками, для любых двух точек расстояние от точки А до точки В не совпадает с расстоянием от точки В до точки А. По сути, я хочу хранить матрицу расстояний в монго, и я хочу чтобы дать ему любые две точки (скажем, B и D), а затем получить расстояние между ними. – RegUser

ответ

0

Какую меру «расстояние» вы используете, из любопытства? Технически вы не можете вызвать функцию d(X, Y) a "distance", если только d(X, Y) = d(Y, X). Расстояние между точками на сфере симметрично, поэтому вы не можете использовать эту метрику. Если все, что вам нужно сделать, это хранить и извлекать значения d(X, Y), только хранить документы, как

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

где X и Y являются независимо от вида значений подходят. Поместите индекс на { "from" : 1, "to" : 1 }, а затем определите

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

Спасибо! Я просто получаю дистанцию ​​от API карт google – RegUser

0

MongoDB поддерживает хранение геопространственных объектов, обеспечивающих особый способ создания индексов и выполнения запросов к этим объектам.

Взгляните:

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

и посмотреть, если это то, что вы ищете.

+0

Я не знаю, как будет работать индекс 2Dsphere. В основном у меня есть таблица, в которой хранятся все места (с долготой и широтами), но я хочу рассчитать расстояния с помощью API карт google и вставить их в другую коллекцию в Mongo. – RegUser