我有一个集合'地方',一个文件如下
{
"_id" : ObjectId("52401a7267778834a23a54a2"),
"userid" : "123",
"loc" : {
"lng" : 77.6166685,
"lat" : 12.9361732
},
"t" : ISODate("2013-04-23T10:39:46.540Z")
}
我想查找用户位置的用户ID 234位于1公里以内[77.6166685,12.9361732]附近
但以下查询无效
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
}
这是什么错误,我该如何纠正?
答案 0 :(得分:3)
我认为问题如下:
你的文档有一个适用于“2d”索引的表单,(你还没有告诉你有什么样的索引),你试图用query which查询它适用于“2dsphere”索引。所以你有两个选择:
我是以第二种方式完成的:
db.d.find({
"loc":{
"$near": [77.6166685,12.9361732],
"$maxDistance":1000
}
})
并得到了正确的结果。