mongo db中的地理空间查询无法使用$ maxdistance

时间:2015-05-28 14:27:41

标签: mongodb geospatial

我在mongodb中使用地理空间索引来查找并列出db中靠近特定位置的对象。在这里,我使用$near$maxDistance来查找特定公里范围内的对象。我在给$maxDistance的价值感到困惑。任何人都可以帮我理解我想为$maxDistance提供什么价值(km,m或rad)? 这是我的数据库结构:

{
        "_id" : ObjectId("556719a7e0550ca9d16ca303"),
        "Name" : "Apl",
        "loc" : [
                11.485489,
                77.247103
        ]
}
{
        "_id" : ObjectId("556719b1e0550ca9d16ca304"),
        "Name" : "Ind",
        "loc" : [
                11.462442,
                77.252167
        ]
}
{
        "_id" : ObjectId("556719bfe0550ca9d16ca305"),
        "Name" : " Ara ",
        "loc" : [
                11.452179,
                77.276629
        ]
}
{
        "_id" : ObjectId("556719eae0550ca9d16ca306"),
        "Name" : " Akodi ",
        "loc" : [
                11.455739,
                77.299278
        ]
}
{
        "_id" : ObjectId("556719f6e0550ca9d16ca307"),
        "Name" : " Kasi ",
        "loc" : [
                11.459693,
                77.328804
        ]
}

在这里,我使用以下查询列出距离特定位置5公里的对象。

db.place.find({loc:{$near:[11.503993, 11.503993],$maxDistance:1000}});

以上查询返回以下内容:

{ "_id" : ObjectId("556719a7e0550ca9d16ca303"), "Name" : "Apl", "loc" :
[ 11.485489, 77.247103 ] }
{ "_id" : ObjectId("556719b1e0550ca9d16ca304"), "Name" : "Ind", "loc" :
[ 11.462442, 77.252167 ] }
{ "_id" : ObjectId("556719bfe0550ca9d16ca305"), "Name" : " Ara ", "loc"
: [ 11.452179, 77.276629 ] }
{ "_id" : ObjectId("556719eae0550ca9d16ca306"), "Name" : " Akodi ", "loc
" : [ 11.455739, 77.299278 ] }
{ "_id" : ObjectId("556719f6e0550ca9d16ca307"), "Name" : " Kasi ", "loc"
 : [ 11.459693, 77.328804 ] }

但如果我使用$maxDistance:66的查询,则不返回任何内容。我应该使用$maxDistance以2公里的速度获取对象的价值是什么?

1 个答案:

答案 0 :(得分:1)

看起来最小和最大距离以米为单位测量:

{
  $near: {
     $geometry: {
        type: "Point" ,
        coordinates: [ <longitude> , <latitude> ]
     },
     $maxDistance: <distance in meters>,
     $minDistance: <distance in meters>
  }
}

弧度与传统坐标一起使用。

来源:http://docs.mongodb.org/manual/reference/operator/query/near/