MongoDB地理空间查询不返回任何内容

时间:2015-07-17 15:47:54

标签: node.js mongodb mongoose geospatial 2dsphere

我有一个带有2dsphere索引的集合,并希望使用$geoWithin$centerSphere函数进行查询。

模型摘录:

{
// ...
coordinates: {
    coordinates: {
        type: Array,
        index: '2dsphere'
    }
}
// ...
}

我成功地将一堆文档插入数据库,现在尝试通过以下方式查询:

Model.find({
    coordinates: {
        coordinates: {
            $geoWithin: {
                $centerSphere : [ [ lng, lat], r ]
            }
        }
    }
})

我面临的问题是,调用不会返回任何内容,既不会返回错误,也不会返回数据。我在mongo shell和我的node.js应用程序中尝试了它,我可以确认的经度和纬度被插入到数据库中。我还尝试将$near$maxDistance一起使用,结果相同。我进一步切换纬度和经度只是为了检查......我确实通过除以地球的半径将r转换为弧度。

我对此时出现的问题缺乏想法,并感谢任何建议!

1 个答案:

答案 0 :(得分:0)

我认为您应该更改模型,但请改用"dot notation"

Model.find({
    "coordinates.coordinates": {
        "$geoWithin": {
            "$centerSphere" : [ [ lng, lat], r ]
        }            
    }
},function(err,callback) {

});