Чтобы найти данные о площади из mongodb Query, используя 2 точки карты Google (широту и долготу) - PullRequest
0 голосов
/ 28 февраля 2019

Я работаю над геопространственной функцией mongodb.

Ниже приводится моя схема БД

{
    _id:5c6fea5aa7f54038cc63db92,
    location:{
        coordinates:[-96.81916,33.07516],
        type:"Point"
    },
    userId:1
}

Индексация по полю location с 2dsphere

У меня есть 2 точки, и у каждого есть широта и долгота, и его пример ниже

sw_latitude : 32.76286484066411 sw_longitude : -96.91870791625979

ne_latitude : 32.789133220783015 ne_longitude : -96.67529208374026

на основе этих 2 баллов мне нужно получить все userIdкоторые охватывают эти 2 точки квадрата

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

1 Ответ

0 голосов
/ 04 марта 2019

Я пробовал много способов, и, наконец, я получил одно решение

Шаг для решения 1:

Шаг 1: найти границу из этой 2 точки

широта: [32.740776 - 32.8112099] И долгота: [- 96.910983 - -96.683016]

Шаг 2: используйте $ box из Geospatial (ref: $ box от mongo ) и передайте эту граничную точку следующим образом ..

{    location: { 
       $geoWithin: { 
           $box:  [ [ 32.740776, 32.8112099 ], [ -96.910983, -96.683016 ] ] 
        }     
      } 
}

Шаг для решения 2:

Шаг 1: настройте существующую точку правильноследующим образом

широта: [32.76286484066411 ДО 32.789133220783015] И долгота: [- 96.91870791625979 ДО -96.67529208374026]

Шаг 2: использовать поле $из Geospatial (ref: $ box от mongo ) и передайте эту границу в эту точку.

{    location: { 
       $geoWithin: { 
           $box:  [ [ 32.76286484066411,  32.789133220783015 ], [ -96.91870791625979, -96.67529208374026 ] ] 
        }     
      } 
}

Надежда будет полезна для вас

...