Mongodb球体索引拒绝我的对象

Mongodb球体索引拒绝我的对象,mongodb,2dsphere,Mongodb,2dsphere,嗨,我有一个带有2d球体索引的集合 wayCollection.createIndex(new BasicDBObject("poly", "2dsphere")); i当我尝试插入某个对象时,出现错误: Exception in thread "main" com.mongodb.WriteConcernException: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "insertDocument ::

嗨,我有一个带有2d球体索引的集合

wayCollection.createIndex(new BasicDBObject("poly", "2dsphere"));
i当我尝试插入某个对象时,出现错误:

Exception in thread "main" com.mongodb.WriteConcernException: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "insertDocument :: caused by :: 16755 Can't extract geo keys from object, malformed geometry?: { _id: ObjectId('53a89dc6a0042baf54050037'), id: 24837452, version: \"64\", changeset: \"13731788\", uid: \"362915\", user: \"micha555\", timestamp: \"2012-11-03T09:11:23Z\", poly: { type: \"Polygon\", coordinates: [ [ [ 9.1244131, 50.0109503 ], [ 9.120464800000001, 50.0099731 ], [ 9.116641, 50.0077
虽然多边形环是闭合的,但第一个和最后一个坐标是相同的

有什么想法吗

下面是另一个被拒绝的多边形:

{
   "type":"Polygon",
   "coordinates":[
      [
         [
            9.0496053,
            51.3255584
         ],
         [
            9.0492235,
            51.32532
         ],
         [
            9.0495831,
            51.3251321
         ],
         [
            9.049917199999999,
            51.3253429
         ],
         [
            9.0496053,
            51.3255584
         ],
         [
            9.049984500000001,
            51.3258463
         ],
         [
            9.0505795,
            51.3262127
         ],
         [
            9.050045600000001,
            51.326574
         ],
         [
            9.0496432,
            51.3263928
         ],
         [
            9.049625300000001,
            51.3262806
         ],
         [
            9.0495628,
            51.3261244
         ],
         [
            9.0495316,
            51.3259341
         ],
         [
            9.0495471,
            51.3257127
         ],
         [
            9.0496053,
            51.3255584
         ]
      ]
   ]
}
当我将其粘贴到此处时,它似乎可以:


也许mongo db不喜欢一个点被使用两次,我要做的第一件事就是检查你的多边形。如果它没有通过,那么您知道您的数据点有问题,这导致了以前许多人的错误

如果它通过了,那么我将检查最近报告并提交给MongoDB的这个bug:。基本上,一个有效的多重多边形会导致MongoDB 2.6.X上的2dsphere索引出错。其他人也报告了类似的问题,所以我打赌这是一个bug,或者一些未记录的限制


我会投票支持JIRA的问题,并在评论中加入你的声音-越多的人让MongoDB知道这个bug存在并影响到他们,修复它的速度就越快。

我要做的第一件事就是检查你的多边形。如果它没有通过,那么您知道您的数据点有问题,这导致了以前许多人的错误

如果它通过了,那么我将检查最近报告并提交给MongoDB的这个bug:。基本上,一个有效的多重多边形会导致MongoDB 2.6.X上的2dsphere索引出错。其他人也报告了类似的问题,所以我打赌这是一个bug,或者一些未记录的限制


我会投票支持JIRA的问题,并在评论中加入您的声音-越多的人让MongoDB知道此缺陷存在并影响他们,修复的速度就越快。

多边形是自交的:


MongoDB禁止此类多边形。

多边形是自交的:


MongoDB禁止此类多边形。

如果您可以将对象的模式与示例数据一起共享,人们将更容易为您提供帮助。很抱歉,格式化的json超出了stackoverflow最大post大小,但错误消息包含完整的对象这是多边形还是多多边形?很多要点。尝试将其作为调试工具绘制出来。你可能有一些相交的元素,它是一个法线多边形。您知道任何联机多边形绘图仪吗?如果您可以将对象的模式与示例数据一起共享,人们将更容易为您提供帮助。很抱歉,格式化的json超出了stackoverflow最大post大小,但错误消息包含完整的对象这是多边形还是多多边形?很多要点。尝试将其作为调试工具绘制出来。你可能有一些相交的元素,它是一个法线多边形。你知道任何在线多边形绘图仪吗?它不是自交的,它的方式只是分享这一点。。。只是触摸即使它在那个点上仅仅触摸自己,它被认为是自相交的,MongoDB会引起一个错误。它不是自相交的,它的方式只是分享这一点。。。仅接触即使它仅在该点接触自身,也被视为自交,MongoDB会引发错误。多边形是自交的,如下面Jesse所述。多边形是自交的,如下面Jesse所述。