如何在数组子字段中使用$ geoIntersects / 2dsphere执行查找?

我有一个文件集合,每个都有一个多边形字段数组。

我想testing一下,如果我的多边形地理交互任何这些多边形。 如果有帮助,它们都是盒子形状的。

如果添加了我正在testing的数组中的多边形的可能性,我将添加赏金点。 我不希望它与自身相交…

城市:

{_id, buildings:[ {coo:{shape:"Polygon", coordinates:[ [0,0], [4,0], [4,5], [5,0],[0,0] ] }, {coo:{shape:"Polygon", coordinates:[ [0,0], [4,0], [4,5], [5,0],[0,0] ] } ] }} 

想象一下,我有大约100左右的arrays元素。 我想确定一个给定的形状是否可以包含在数组中,是否与任何其他多边形相交(再次排除它本身)。

此页面将帮助您在复合空间文档上创build地理空间索引:

http://docs.mongodb.org/manual/core/geospatial-indexes/

然后你可以使用这个页面来找出你的查询

http://docs.mongodb.org/manual/reference/operator/box/#op._S_box

尝试这个 :

 <collection>.findOne({ 'polygons': { $geoIntersects: { $geometry: { type: "Point", coordinates: [Longitude, Latitude] } } } }