虽然Mongo在遗留坐标上提供了2dsphere索引,但查询需要以geoJSON格式呈现给点/形状。例如,我在地址集合中插入了以下记录。
{ "city" : "First", "geo" : [ 13.45, 23.46 ] }
{ "city" : "Second", "geo" : [ 13.45, 20.46 ] }然后,我使用下面的命令添加了2dsphere index,因为mongodb仍然允许在遗留坐标上使用2dsphere index。
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格式。有什么变通方法吗?
发布于 2014-12-18 13:42:33
目前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
https://stackoverflow.com/questions/23648057
复制相似问题