mongodb geospacial查询:$ centerSphere没有给出好的结果

时间:2016-03-07 13:37:33

标签: mongodb

我有来自欧洲的地理数据(lng,lat)数据库。 我尝试进行地理空间查询以获取圈内的所有元素。

所以,我创建了一个GeoJSON字段,并在其上创建了一个2dsphere索引。 看起来像这样:

{ 
  "_id" : ObjectId("56c3484612aeb853a83ec336"), 
  "defaultLabel" : "Zoo de Mulhouse", 
  "weight" : NumberInt(1), 
  "country" : "FR", 
  "loc" : {
    "type" : "Point", 
    "coordinates" : [
      47.731673, 
      7.347819
    ]
  }
}

db.myCollection.createIndex({"loc":"2dsphere"});

到目前为止,这么好。 但后来我尝试了一些查询。 我从距离数据大约1,12公里(1120米)处取了一个点,并提出了一个半径为1200米的请求。

db.poi.find({loc:
             {$geoWithin:
               {$centerSphere:[
                 [47.728593,7.333486],
                 1200 / 6378100]        // radius of earth ~6378.1Km
               }
             }
           })

我没有结果。 有了相同的要求,我必须投入大约1650米来获得结果。 显然,这是不可接受的。

那么,我做错了什么?

1 个答案:

答案 0 :(得分:0)

发现问题:坐标在我的遗产中存储为[lat,lgn],我在创建GeoJSON之前没有检查,所以它的顺序错误。