我有一个在MongoDB中存储为geoJson的多边形列表。 其中一个多边形的示例: { “区域”:“Area123”, “边界”:{ “type”:“Polygon”, “坐标”:[[[100,12],[120,12],[120,15],[100,12]]] } } Boundary是一个2dsphere索引。
使用$ geoWithin,我可以指定一个更大的多边形并返回完全位于这个更大的多边形内的Area123。
有没有办法在Area123中指定一个较小的多边形,让MongoDB返回Area123?
答案 0 :(得分:1)
您可以使用$geoIntersects专门查找多边形与其他多边形相交的人。你可以这样做:
db.<collection>.find( { Boundary :
{ $geoIntersects :
{ $geometry :
{ type : "Polygon"
coordinates : [ <coordinates of Area123> ]
} } } } )
然而,这个查询将返回甚至不包含Area123
的多边形,也包括那些在内部的人,那些相交的人等等。
因此,您可以检查每个返回的多边形的Area123点是否包含在内部。