0

私は Play Framework v1.2.5 と MongoDB Morphia モジュール PlayMorphia v1.2.12 を MongoDB v2.4.5 に接続して使用しています。

Morphia を使用して地理空間クエリを実行する方法がわかりません。

たとえば、基本的なクエリは問題ありません。

//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 クエリの使用方法については言及されていません。

ドキュメントで示唆されているように、このようなものを使用しようとしましたが、うまくいきませんでした。

List<Address> e = Address.q().filter("latlon near","[47.5, -122.3]").asList();
4

2 に答える 2

1

究極の問題は、フィルターするパラメーターが double[] ではなく String であることだと思います。次のようなものを試してください: Address.q().field("latlon").near(47.5, -122.3). 具体的に $geoWithin が必要な場合は、.field("latlon").within(Shape.center(new Point(47.5, -122.3), someRadius) を使用できます。そのバージョンの within() には morphia 0.104 が必要です。

于 2013-09-19T21:45:42.733 に答える
0

これを達成する方法を見つけましたが、結果をキャストする必要があるため、かなり醜いです。

List<Address> addresses = (List<Address>)(List<?>) Address.q().field("latlon").near(47.5, -122.3).asList();
于 2013-09-19T22:02:19.980 に答える