поддержка spring mongo для geoJSOn для индекса 2dsphere

Несмотря на то, что Mongo предоставляет индекс 2dsphere для устаревших координат, запрос требует представления Point/Shapes в формате geoJSON. Например, я вставил следующие записи для сбора адресов.

{ "city" : "First",  "geo" : [ 13.45, 23.46 ] }
{ "city" : "Second", "geo" : [ 13.45, 20.46 ] }

Затем я добавил индекс 2dsphere, используя следующую команду, поскольку mongodb по-прежнему разрешает индекс 2dsphere для устаревших координат.

db.address.ensureIndex({"geo":"2dsphere"})

Затем, если я делаю запрос $near, используя устаревший формат, но получаю исключение.

> db.address.find({"geo":{$near:{"x":13.45,"y":23.45}}})
error: {
        "$err" : "can't parse query (2dsphere): { $near: { x: 13.45, y: 23.45 } }",
        "code" : 16535
}

Но если сделать тот же запрос в формате geoJSON, я получу результат.

> db.address.find({"geo":{$near:{"type":"Point",coordinates:[13.45,23.45]}}})
{ "_id" : ObjectId("537306b4b8ac1f134d9efe89"), "city" : "First", "geo" : [ 13.45, 23.46 ] }
{ "_id" : ObjectId("537306c3b8ac1f134d9efe8a"), "city" : "Second", "geo" : [ 13.45, 20.46 ] }

Мой вопрос в том, что GeoConverters все конвертирует в устаревший формат. Итак, очевидно, что они не будут работать, если я буду использовать индекс 2dsphere. Доступны ли конвертеры для формата geoJSON. Есть ли обходной путь?


person Poorna Subhash    schedule 14.05.2014    source источник


Ответы (1)


В настоящее время spring-data-mongo не поддерживает новые индексы mongo (> 2.4) 2dsphere. В Jira есть открытый вопрос по этому поводу: https://jira.spring.io/browse/DATAMONGO-1113?jql=project%20%3D%20DATAMONGO%20AND%20text%20~%20%22%24geometry%22

В ссылке вы можете найти основную ссылку на пример того, как создавать такие конвертеры. Вы можете использовать его или преодолеть это ограничение, создав @Query с запросом, который вы хотите, чтобы выполнялся spring-data-mongo.

С уважением.

Аваз

person avaz    schedule 18.12.2014