查找与点

时间:2016-11-22 18:42:22

标签: node.js mongodb geolocation geojson

当我尝试在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格式存储圆圈,只能存储多边形,这很难做到我想要的。有人知道是否有另一种方法可以使这项工作?感谢

1 个答案:

答案 0 :(得分: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
}

但我想要做的是为每个合作伙伴创建一个半径并检查哪些合作伙伴与一个点相交,而不是让半径内的合作伙伴。