0

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

模型摘录:

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

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

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

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

我对此时出了什么问题一无所知,并感谢您提出任何建议!

4

1 回答 1

0

我认为您应该更改模型,但是请改用“点表示法”

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

});
于 2015-07-17T16:08:43.357 回答