Поиск по всем полигонам, содержащим ряд точек в mongodb

Мой вопрос похож на этотПо заданному набору полигонов и серии точек найдите, какие полигоны являются точками, расположенными

У меня есть база данных mongodb с двумя коллекциями,районы который хранит набор полигонов (провинций Италии), иточки который хранит набор образцов, каждый из которых имеет пару координат. Я использую mongodb 2.4 и формат GeoJSON для хранения данных, обе коллекции имеют индекс 2dsphere.

Я могу определить, находится ли заданная точка внутри заданного многоугольника.

Теперь я хотел бы найти все полигоны, которые содержат список образцов, чтобы нарисовать карту, как этаhttp://www.peerates.org/province.png

Есть ли лучшее решение, чем перебирать все точки и проверять, находится ли оно внутри каждого многоугольника, используя геоиндексы mongodb?

редактировать: я нашел частичное решение с помощью функции, хранящейся в коллекции system.js

 function(){
    var found = [];
    var notfound = [];
    db.regions.find().forEach(
        function(region){
            var regionId = region._id;
            var query = {
                    'loc':{
                        $geoWithin: {
                            $geometry: region.loc
                        }
                    }
                };
            var len = db.points.find(query).size();
            if(len>0){
                found.push(regionId);
            }else{
                notfound.push(regionId);
            }
        }
    );
    return {
        "found":found,
        "notfound":notfound
    };
}

к сожалению, я не могу использовать его на mongohq.com, похоже, eval () больше не поддерживается.

@RickyA спасибо, рассмотрим переход на постгис

Ответы на вопрос(1)

Ваш ответ на вопрос