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

时间:2013-05-30 21:39:41

标签: node.js mongodb geospatial

我有一个包含文档的集合,每个都有一个包含多边形的字段数组。

我想测试我的多边形geoIntersect是否有任何这些多边形。如果它有帮助,它们都是盒形的。

如果你在我正在测试的数组中添加多边形的可能性,我会添加赏金点。我不希望它与自己相交......

城市:

{_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个元素。 我想确定,对于给定的形状,可能包含在数组中,如果它与任何其他多边形相交或者不与其他多边形相交(再次,排除它本身就在那里)。

2 个答案:

答案 0 :(得分:0)

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

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

然后您可以使用此页面找出您的查询

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

答案 1 :(得分:0)

试试这个:

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