@demon24ru

PouchDB (CouchDB) как правильно организовать GIS поиск по имени сущности?

Вопрос следующего плана:
Имеем точки на карте 3000+ занесенные в базу данных, каждая в качестве отдельного документа с _id в виде Geohash пример:
{
  "_id": "y1h8vmsum",
  "_rev": "1-sdfsdfsdfsdfsdfsdfsdfsdf"
}

И имеем вторую базу в которой занесено 10 000 + типов товаров каждый товар это отдельный документ пример:
{
  "_id": "0B3358C1-BA4B-4186-8795-9024203EB7DD",
  "name": "Супер пупер товар"
}

Отношение между точками и товарами, если ориентироваться на реляционную модель базы данных, как многие-ко-многим. То есть на каждой точке может быть несколько или все типы товаров, соответственно один тип товара может быть на нескольких точках.
Вопрос следующий как организовать поиск типов товаров по наименованию в определенном радиусе на карте от определенной точки местоположения?
Upd:
Базы данных в pouchDB они реплицируются на мобильное устройство, там, на мобильном устройстве, они только читаются и должна делаться указанный выше GEO-Query.
Подозрение есть что можно решить этот вопрос так:
В документ каждого типа товара запихиваем массив точек где он может находится пример:
{
  "_id": "0B3358C1-BA4B-4186-8795-9024203EB7DD",
  "name": "Супер пупер товар",
  "points": [
    "y1h8vmsum",
    "y1h8vmvmv"
  ]
}

Поиск производим по полю "name" $and "points"
pouchBase.find({
  selector: {
    name: "Супер пупер товар",
    "$elemMatch": {
      "points": "... Каким то макаром поинты в радиусе"
     }
  }
});

Но если пихать массив точек в радиусе от устройства их может быть все 3000+ запрос сначала погибнет на передачи данных в pouchDB затем погибнет сама база на обработке.
Возможно ли решить данный вопрос так или как то иначе учитывая что geo-query запросы должны выполняться offline на мобильном устройстве?
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
kocherman
@kocherman
Формула расстояния между двумя координатами здесь.

/* Бесплатный совет */ PouchDB (CouchDB) замени на Mongo или PostGIS.

PouchDB (CouchDB) не оптимизированы под геозапросы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы