2016-11-22 2 views
0

я получаю в беде, когда я пытаюсь запустить этот код на MongoDBНайти круги, пересекающую точку

var partners = db.partners.find({}) 
var kmToRadius = function(km){ 
    var earthRadiusInKm = 6378.1; 
    return km/earthRadiusInKm; 
} 
db.runCommand({ 
    $centerSphere: [ [partners.loc], kmToRadius(partners.km) ] :{ 
     $geoIntersects:{ 
      $geometry: { type: "Point", coordinates: [ -73.93414657, 40.82302903 ] } 

      } 
    } 
}) 

То, что я пытаюсь сделать, это получить все партнеры места (которые находятся в формате GeoJSON), сделайте круг, используя $ centerSphere, и проверьте, есть ли пересечение с координатой.

Я знаю, что я не могу хранить круги в формате GeoJson, только полигоны, которые очень сложно делать, что я хочу. Кто-то знает, есть ли другой способ сделать эту работу? Благодаря

ответ

0

Мои партнеры коллекции кажется, что это:

{ 
    "_id" : ObjectId("583315cfa9d41218cc9c833f"), 
    "updatedAt" : ISODate("2016-11-21T15:42:07.703Z"), 
    "createdAt" : ISODate("2016-11-21T15:42:07.703Z"), 
    "name" : "partnerName", 
    "mainEmail" : "email", 
    "password" : "$2a$10$WJC6WzZNM8NyDKQgovJa.OICLOMV6Qp6xcGLE3fRcUGuBa8Zhy8qy", 
    "km" : 10, 
    "loc" : { 
     "type" : "Point", 
     "coordinates" : [ 
      -46.62217, 
      -23.668224 
     ] 
    }, 
    "rate" : 4, 
    "nServices" : 35 
} 

Но то, что я хочу сделать, это создать радиус для каждого партнера и проверить, какие партнер пересекает точку, вместо того, чтобы получить партнер в радиусе.

Смежные вопросы