Mongodb 异常“点不在 [ -180, 180 ] 区间内

标签 mongodb exception location

我有一个集合“地方”,一个文档如下

{ 
"_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/

相关文章:

node.js - 模拟 MongoDB 连接以进行 MEAN 应用程序单元测试

java - 如何在队列中使用异常

iOS SwiftLocation 库 : How to get placemark from location?

html - 如何水平和垂直居中表格?

mysql - MongoDB 类型从 NumberLong 更新为 String

mongodb - 为什么 mongod.service 被我的系统杀死?

node.js - 超时错误 - MongoServerSelectionError:连接 ECONNREFUSED::1:27017 - [NodeJS + MongoDB]

linux - 如何防止我的 Perl 脚本中的错误终止脚本?

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

java - 如何在运行时将 JCheckBox 排列在 JTable 上方的行中,与每个单元格 x 坐标的第一行对齐?