@likejavascript

Как правильно искать документы по городам странам используя MongoDB и GoogleMaps APIv3?

Реализовываю систему хранения и поиска объявлений по типу Airbnb и в качестве БД использую MongoDB. В самом объявлении храню координаты широты/долготы, которые юзер указывает при помощи GoogleMaps Places Autocomplete

и в БД данные документа выглядят следующим образом:

{
    "_id": {
        "$oid": "54f34c8bbb465c1d119bef49"
    },
    "author": {
        "$oid": "54ea447c23f6f81f676083c9"
    },
    'Заголовок объявления',
    "location": {
        "name": "Санкт-Петербург, Россия",
        "loc": [
            30.335098600000038,
            59.9342802
        ]
    },
    "created_at": {
        "$date": "2015-03-01T17:29:47.603Z"
    },
    "__v": 0
}


Вопрос: как найти список всех объявлений, если пользователь забивает например "Россия"? Т.е нужно найти все объявления с адресами, которые были созданы в пределах России.
  • Вопрос задан
  • 359 просмотров
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Нужно иметь в формате geoJSON полигон, который представляет собой очертания России, и выбирать те документы, которые попадают в него, с помощью $geoWithin. Если это окажется слишком долгим запросом, можно сначала выбирать по принадлежности bounding box.

Где хранить этот полигон — дело десятое, хоть в той же монге в другой коллекции, хоть просто в джейсоне. Полигоны эти можно взять, скачав векторные очертания стран в .shp и сконвертив с помощью qgis, нагуглить нетрудно.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы