我有一个集合“地方”,一个文档如下
{
"_id" : ObjectId("52401a7267778834a23a54a2"),
"userid" : "123",
"loc" : {
"lng" : 77.6166685,
"lat" : 12.9361732
},
"t" : ISODate("2013-04-23T10:39:46.540Z")
}
我想找出用户 ID 234 且位于 [77.6166685,12.9361732] 附近 1 公里范围内的用户的位置
但是下面的查询不起作用
db.place.find({{"userid":"234","loc":{"$near":{"$geometry":{"type":"point","coordinates":[77.6166685,12.9361732]},"$maxDistance":1000}}})
它显示如下错误
error: {
"$err" : "point not in interval of [ -180, 180 ] :: caused by :: { 0: 0.0, 1: 250.0 }",
"code" : 16433
}
这个错误是什么?我该如何纠正它?
最佳答案
我认为问题如下:
您的文档有一个适用于“2d”索引的表单(您没有告诉您有什么类型的索引),并且您正在尝试使用 query which 查询它。适用于“2dsphere”索引。所以你有两个选择:
- 将文档转换为GeoJSON格式(此处不指定几何图形),放入2dsphere索引并以这种方式查询
- 什么都不做并查询它 with a correct使用“2d”索引的方式
我是用第二种方式做的:
db.d.find({
"loc":{
"$near": [77.6166685,12.9361732],
"$maxDistance":1000
}
})
并得到了正确的结果。
关于Mongodb 异常“点不在 [ -180, 180 ] 区间内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20368925/