如何将js函数转换为mongodb聚合阶段

时间:2018-10-15 09:50:37

标签: mongodb google-maps mongoose mongodb-query aggregation-framework

我在Google地图上绘制了1000个多边形数据(作为一个区域),其数据存储在mongodb中。
现在我必须找到天气点是否位于该多边形内。 我已经使用javascript成功实现了这一目标。但是现在我想将我的函数转换为聚合阶段。 这是我的js代码。

function checkpoint(point, vs) {
    let x = point[0], y = point[1];
    let inside = false;
    let j = vs.length - 1;
    for (let i = 0; i < vs.length; j = i++) {
        let xi = vs[i][0];
        let yi = vs[i][1];

        let xj = vs[j][0];
        let yj = vs[j][1];

        let intersect = ((yi > y) != (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
        if (intersect) inside = !inside;
    }

    return inside;
};

我知道我们可以在聚合内使用条件,但是数组值呢? 我如何遍历每个数组值?聚合内部?

这是我的数据格式

{
    "_id":"5bc50c0e85da251e84cb8557",
    "location":[
        [23.586698,71.203369],
        [21.378973,70.049805], 
        [21.225437,72.203125]
    ],
    "name":"zone x",
    "detail":"#ff0000",
    "__v":0
}

并且使用聚合代替js函数会好/高效/快速吗?

0 个答案:

没有答案