Вопрос следующего плана:
Имеем точки на карте 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 на мобильном устройстве?