我需要有关地理空间查询的帮助。
我有两个集合: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元素时遇到了问题。
请有人帮帮我吗?
谢谢
答案 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