Расстояние до нескольких географических точек - MongoDB - PullRequest
0 голосов
/ 01 октября 2018

Можем ли мы найти расстояние до двух или более геопоинтов в запросе, используя $geoNear от точки запроса?

 Transport.aggregate([
    {
        $geoNear: {
            near: first_route.origin.geocode,
            spherical: true,
            distanceField: "origin.distance",
            key: "route.origin.geocode"
        }
    },
 { $match: query },

Я расскажу сценарий.У меня есть коллекция документов, которая содержит список автобусных услуг, поэтому каждый документ будет содержать сведения о поездке с начальным геопунктом (A), конечным геопунктом (B) и линией строк, определяющей путь вместе со временем начала.Таким образом, пользователи могут приходить и искать автобус, задавая начальное (AU) и конечное (BU) геопункт (используя Google API).Что я делаю здесь, чтобы запросить шину, так это то, что я буферизую выбранные пользователем геопоинты, используя turfjs, и проверяю, пересекает ли она линейную строку в mongodb, используя $geoIntersects.Теперь я получу автобусы от A до B и от B до A, как результат, я хочу отфильтровать B из A из результата (пользователь может искать суб-маршрут между фактическим автобусным маршрутом).Для этого я хочу найти расстояние от начальной точки (A) автобуса до «начальной точки пользователя (AU)» и «конечной точки, выбранной пользователем (BU)», из этих расстояний я всегда могу убедиться, что A-AU меньшечем A-BU и, таким образом, отфильтровываем шины от B до A. Документ, как показано ниже, я удалил несколько координат, чтобы уменьшить длину данных.Я предпочитаю логические предложения также для решения этой проблемы.

{
    "_id": "5bb21fe97c877c39e0bbc694",
    "route": {
        "origin": {
            "geocode": {
                "type": "Point",
                "coordinates": [
                    10.0601903,
                    76.6350827
                ]
            },
            "geocode_buffered": {
                "type": "Polygon",
                "coordinates": [
                    [  ]
                ]
            },
            "place": "Kothamangalam, Kerala, India",
            "place_id": "ChIJqY5hYBLmBzsRB1zUid9GIqM"
        },
        "destination": {
            "geocode": {
                "type": "Point",
                "coordinates": [
                    9.9894229,
                    76.57897490000005
                ]
            },
            "geocode_buffered": {
                "type": "Polygon",
                "coordinates": [
                    [ ]
                ]
            },
            "place": "Muvattupuzha, Kerala, India",
            "place_id": "ChIJ8_D2nYzdBzsR5WJwzP9sULQ"
        },
        "geocodes": {
            "type": "LineString",
            "coordinates": [
                [
                    10.06028,
                    76.63511000000001
                ],
                [
                    10.06042,
                    76.6346
                ],
                [
                    10.060490000000001,
                    76.63411
                ], 
                [
                    9.989220000000001,
                    76.58159
                ], 
                [
                    9.989450000000001,
                    76.5794
                ],
                [
                    9.98943,
                    76.57932000000001
                ],
                [
                    9.98935,
                    76.57905000000001
                ]
            ]
        },
        "route_index": 0,
        "route_name": "NH85" 
    },
    "access_type": "public",
    "type": "bus",
    "day_frequency": [
        1,
        2,
        3,
        4,
        5,
        6,
        7
    ],
    "duration_days": 0,
    "duration_hours": 0.23,
    "created_on": "2018-10-01T13:20:26.006Z",
    "title": "Rx100",
    "description": "Ls",
    "timings": [
        {
            "departure": "13:00",
            "destination": "13:23",
            "_id": "5bb21fe97c877c39e0bbc692",
            "trackings": []
        }
    ], 
    "__v": 0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...