0

我有一个在 MongoDB 中存储为 geoJson 的多边形列表。多边形之一的示例: { "Area" : "Area123", "Boundary" : { "type" : "Polygon", "coordinates" : [[[100,12],[120,12],[120, 15],[100,12]]] } } 边界是一个 2dsphere 索引。

使用 $geoWithin,我可以指定一个更大的多边形并返回完全位于这个更大多边形内的 Area123。

有没有办法指定位于 Area123 内的较小多边形并让 MongoDB 返回 Area123?

4

1 回答 1

1

您可以使用$geoIntersects专门寻找与其他多边形相交的多边形。你可以这样做:

db.<collection>.find( { Boundary :
                         { $geoIntersects :
                            { $geometry :
                               { type : "Polygon"
                                 coordinates : [ <coordinates of Area123> ]
                      } } } } )

但是,此查询甚至会返回不包含的多边形,Area123以及内部的多边形、相交的多边形等。

因此,您可以检查每个返回的多边形的 Area123 点是否包含在其中。

于 2013-10-15T21:59:56.390 回答