大家好我有以下方法在mongodb中的多边形内进行计数:
public function countWithinPolygon($polygon, $tags = array())
{
// var_dump($polygon);
// var_dump($polygon->getPoints());exit();
$query = array(
'point' => array(
'$within' => array(
'$polygon' => $polygon->getPoints()->first()->toArray(true)
)
)
);
if($tags)
{
$query['tags'] = array(
'$all' => $tags
);
}
return parent::count($query);
}
对于一些包含少量数据的查询,这是可以的。在包含4000多个调用的较大数据集上,执行时间非常可悲,可能需要数小时。平均而言,执行需要三个小时。有关更好的写入方式的想法或提示,以节省时间并优化此查询吗?
答案 0 :(得分:0)
通过确保索引如db.polygon.ensureIndex({'GeoJSON.geometry':'2dsphere'});