我有一个带有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
转换为弧度。
我对此时出现的问题缺乏想法,并感谢任何建议!
答案 0 :(得分:0)
我认为您应该更改模型,但请改用"dot notation":
Model.find({
"coordinates.coordinates": {
"$geoWithin": {
"$centerSphere" : [ [ lng, lat], r ]
}
}
},function(err,callback) {
});