Несмотря на то, что 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. Есть ли обходной путь?