Mongodb使用$ near查找查询并且坐标不起作用

Dea*_*Iss 7 coordinates mongodb geojson 2dsphere

我正在尝试在mongodb中使用一些地理定位功能.使用$ near的查询查询似乎不起作用!

我目前在我的数据库中有这个对象:

{
    "Username": "Deano",
    "_id": {
        "$oid": "533f0b722ad3a8d39b6213c3"
    },
    "location": {
        "type": "Point",
        "coordinates": [
            51.50998,
            -0.1337
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我也设置了以下索引:

{
  "v": 1,
  "key": {
    "location": "2dsphere"
  },
  "ns": "heroku_app23672911.catchmerequests",
  "name": "location_2dsphere",
  "background": true
}
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时:

db.collectionname.find({ "location" : { $near : [50.0 , -0.1330] , $maxDistance : 10000 }})
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

error: {
    "$err" : "can't parse query (2dsphere): { $near: [ 50.0, -0.133 ], $maxDistance: 10000.0 }",
    "code" : 16535
}
Run Code Online (Sandbox Code Playgroud)

有谁知道我哪里出错了?任何帮助将非常感激!

Joh*_*ell 12

如果您的数据也是GeoJSON格式,那么您似乎需要使用GeoJSON格式.如果您使用:

db.collectionname.find({
    "location": {
        $near: {
            $geometry:
                { type: "Point", coordinates: [50.0, -0.1330] }, $maxDistance: 500
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

它应该工作.我可以使用GeoJSON存储格式为该字段复制错误,但文档调用查询表达式中的遗留点.我认为文档有点不清楚,因为他们建议您可以使用GeoJSON和遗留坐标以及2dsphere索引2dsphere

我正在使用2.4.10,因为它有价值,因为2.4版本中的空间有一些重大变化.