首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PlayMorphia GeoSpatial查询

PlayMorphia GeoSpatial查询
EN

Stack Overflow用户
提问于 2013-09-19 21:22:39
回答 2查看 305关注 0票数 0

我使用的是Play Frameworkv1.2.5和连接到MongoDB v2.4.5的PlayMorphia吗啡模块PlayMorphia v1.2.12。

我不知道如何使用Mor体进行地理空间查询。

例如,基本查询很好:

代码语言:javascript
复制
//save a test address
new Address(47.5, -122.3, "123 South Main Street", "Seattle", "WA", "98109").save();

//now find it
List<Address> address = Address.q().filter("city", "Seattle").filter("street", "123 South Main Street").asList();
assertEquals(address.get(0).street,"123 South Main Street");

但是,文献资料没有提到如何使用MongoDB的$geoWithin $geoIntersects $near $nearSphere查询。

正如文档中所暗示的那样,我尝试使用类似的东西,但是它没有起作用。

代码语言:javascript
复制
List<Address> e = Address.q().filter("latlon near","[47.5, -122.3]").asList();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-19 22:02:19

我找到了一种方法来实现这一点,然而,这是相当丑陋的,因为结果需要铸造。

代码语言:javascript
复制
List<Address> addresses = (List<Address>)(List<?>) Address.q().field("latlon").near(47.5, -122.3).asList();
票数 0
EN

Stack Overflow用户

发布于 2013-09-19 21:45:42

我认为最终的问题是,要筛选的参数是字符串,而不是double[]。尝试类似于: Address.q().field("latlon").near(47.5,-122.3)。如果您特别需要$geoWithin,可以使用.field("latlon").within(Shape.center(new (47.5,-122.3),someRadius)。对于within()的那个版本,您将需要morphia 0.104。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18905139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档