2011-03-25 3 views
16

У меня есть набор документов, каждый из которых содержит точку в 3-х местах, хранящуюся в коллекции MongoDB. MongoDB в настоящее время имеет геопространственные индексы только для 2-х пространств. Есть ли способ использовать геопространственный индекс для выполнения аналогичных запросов по 3-пространственным данным?Использование геопространственного индекса MongoDB с 3d данными

+0

Вы имеете в виду вместо x вы хотите x, y, z? –

+4

+1 - Я даже не знал, что у Mongo был Geospatial Index .. –

+0

Он имеет сферическую и коробчатую модель для геопространства, модель коробки не так полезна для жестких основных типов ГИС, но интересно играть с приложениями местоположения , –

ответ

1

Вы можете убить его, сжимая один из размеров, но вы потеряете половину своей точности.

Скажем, если они были 64-битные ключи, и вы хотите хранить три 32 бита координаты: [(х < < 32) + y, z]

Хека, вы можете даже чередовать три и хранить ее в одном ключ:

ххх

ууу

ZZZ

xyzxyzyz

+1

Я думаю, что это испортит концепцию «близко», для которой используется геопространственный индекс, не так ли? –

+0

Да и нет. Если вы установите низкие бит разбитого измерения с помощью переменной, которая является наиболее случайной, вы должны быть в порядке. Второй трюк чередующихся битов отлично подходит для смешения произвольного количества измерений в одном. –

+0

Я действительно не понимаю этого. Как это реально работает в коде оболочки JavaScript MongoDB? Не могли бы вы привести пример того, как определить запрос index & sample? Благодаря! Также, как бы вы это сделали: http://stackoverflow.com/questions/6003943/mongodb-find-most-recent-closest-posts-limit-20 – ma11hew28

Смежные вопросы