手动找到与Meteor / Mongo最近的坐标

时间:2015-05-29 01:05:08

标签: javascript mongodb meteor coordinates distance

我使用$near命令返回坐标附近的城市列表。

 Villages.find({loc: {$near: [lat,long], $maxDistance: 2}}, 
                     {fields: {name: 1, _id: 0}}, 
                     {limit: 1}
                     );

这很有效,但我遇到的问题是你可以靠近大城市的边缘,但在技术上仍然比下一个邻近城市的中心更接近你所在的城市。因此我和#39; d喜欢根据人口对结果进行加权(只有数据我必须猜测一个城市是否很大)。由于我不相信我可以使用$near执行此操作,因此我需要手动(通过粗体或其他方式)选择最近的城市。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

如果这样有效,那就好了。您的代码中存在轻微的技术错误,可能是负责的:

 Villages.find({loc: {$near: [long,lat], $maxDistance: 2}}, 
                 {fields: {name: 1, _id: 0}}, 
                 {limit: 1}
                 );

Mongo使用long, lat而非lat, long。值得一提的是,这种模式不赞成使用:

loc: { $near : {
            $geometry : [long, lat],
            $maxDistance : 2
        } }

loc看起来像这样:

loc: {
    type : "Point",
    coordinates : [ long , lat ]
}

请务必同时为它们编制索引:MyCollection._ensureIndex({"loc" : "2dsphere"});