mongodb java driver 3.4.x geoquery

时间:2017-02-26 17:32:07

标签: java mongodb

我需要有关地理空间查询的帮助。

我有两个集合:Points和MultiPolygon

我想检索特定MultiPolygon中包含的所有点。

两个元素的结构是:

{_id : someID, "geometry" : { "type" : "Point", "coordinates" : [ 12.54638671875, 41.85319643776675 ] }}

{_id: "id", "type": "MultiPolygon",
"coordinates": [[[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]],[[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],[[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]]}

为此,我在Multipolygon集合上进行查询,以便检索我必须用于进行geoIntersect查询的形状,但没有任何成功。

特别是我将Datacenter文档的坐标转换为Filter类所需的BSON元素时遇到了问题。

请有人帮帮我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以像这样使用MongoDB驱动程序的MultiPolygon对象

List<PolygonCoordinates> polygonList = new ArrayList<>();
// Add your Positions in polygonList.
MultiPolygon multiPolygon = new MultiPolygon(polygonList);

this.mongoCollection.find(geoIntersects("geometry", multiPolygon));

您可以在MongoDB JavaDoc上找到更多信息:https://static.javadoc.io/org.mongodb/mongo-java-driver/3.2.0-rc0/com/mongodb/client/model/geojson/MultiPolygon.html