Индекс Mongodb Sphere отклоняет мой объект
Привет у меня есть коллекция с 2d индексом сферы
wayCollection.createIndex(new BasicDBObject("poly", "2dsphere"));
я, когда я пытаюсь вставить определенный объект, я получаю сообщение об ошибке:
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
]
]
]
}
когда я вставляю его сюда, кажется, все в порядке: http://geojsonlint.com/
возможно монго дб не любит когда точка используется дважды
2 ответа
Первое, что я хотел бы сделать, это проверить ваш полигон на http://geojsonlint.com/. Если это не проходит, то вы знаете, что у вас есть проблема с вашими точками данных (которая ранее вызывала эту ошибку для многих людей).
Если это произойдет, я бы проверил эту ошибку, о которой недавно сообщили и отправили в MongoDB: https://jira.mongodb.org/browse/SERVER-13735. В основном допустимый MultiPolygon вызывает ошибку с индексом 2dsphere на MongoDB 2.6.X. Другие сообщали о подобных проблемах, поэтому я уверен, что это ошибка или недокументированное ограничение.
Я бы проголосовал за проблему в JIRA и добавил бы ваш голос к комментариям - чем больше людей сообщат MongoDB, что эта ошибка существует и влияет на них, тем быстрее она будет исправлена.
Многоугольник самопересекающийся:
MongoDB запрещает такие полигоны.