oJSON格式化过的数据,因为仓库不能处理,基本上你就“完蛋”了(至少生成的near查询不行)。我尝试了在我映射的City对象里使用GeoJSON的类,但是不能使转换正常工作(Spring Data框架没有使用Jackson框架做序列化)。并且,库接口里的geoNear方法生成的query串使用的旧的坐标对,而不是GeoJSON几何结构。如果Spring Data能够提供对GeoJSON格式的位置和查询的支持,就像在一个很好的蛋糕顶端添加了一颗樱桃。
对于这个用例,我对于框架选择是:Spring Data,接着是Jongo和Java Driver。 Jongo排第二是因为其映射的功能,而不是其他方面的功能;Java Driver也基本相同。Morphia排最后是因为缺少对geoNear查询的支持,并且缺少对地理对象的内置支持(double类型的数组除外)。当Morphia的下一个版本发布的时候,它的关注点可能会改变。使用Java Driver写出的程序可能较冗长,但是和Groovy搭配在一起使用,冗长的缺点也可以克服。
这是一个相当简单的例子,但是对我来说这是一个宝贵的学习经验。基于上文中我的了解,我可能倾向于使用Spring Data MongoDB框架,并且当在库接口里函数过于复杂时,我会引入Java Driver。或许在其他的场景下,我的选择会不一样,时间会给我答案。我觉得,胸中有了这两个的组合,没有什么我做不了的了。