spring mongo支持geoJSOn for 2dsphere index

时间:2014-05-14 07:20:23

标签: mongodb spring-data-mongodb

Mongo虽然在传统坐标上提供了2dsphere索引,但查询需要以geoJSON格式呈现给Point / Shapes。例如,我已将以下记录插入到地址集合中。

{ "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格式的转换器。有没有解决方法?

1 个答案:

答案 0 :(得分:0)

目前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

在链接中,您可以找到指向如何创建此类转换器的示例的主要链接。您可以使用它,或者您可以克服此限制,使用您希望执行spring-data-mongo的查询创建@Query

问候。

avaz