2016-11-22 33 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 
} 

但是我想做的是爲每一個合作伙伴半徑,並檢查其合作伙伴相交的點,而不是得到一個半徑範圍內的合作伙伴。