$ out聚合期间的ConnectionTimeoutException

时间:2019-05-17 17:18:19

标签: php mongodb

我需要转换某些集合中的某些数据,并且这样做,我有以下脚本将数据克隆到一个临时集合中,在完成所有检查后,该临时集合将覆盖另一个。

这是脚本:

$projectStep = array(
  'report_id' => 1,
  'space' => 1,
  'location' => array(
    'type' => 'Point',
    'coordinates' => array('$longitude', '$latitude')
  ),
  'altitude' => 1,
  'data' => 1
);

foreach ($collections as $coll) {
  $outname = "{$coll}_geospatial";

  $pipeline = array(
    array('$project' => $projectStep ),
    array('$out' => $outname)
  );

  $coll = $db->selectCollection($collection);
  $coll->aggregate($pipeline);
}

它按照我在集合的一个子集上运行的测试中的预期工作,但是当我对整个集合执行时(超过3,503,245个文档,而我的测试集是一堆文档),我得到了以下内容错误:

exception 'MongoDB\Driver\Exception\ConnectionTimeoutException' with message 'Failed to send "aggregate" command with database: Failed to read 4 bytes: socket error or timeout'

它总是在从聚合语句开始5分钟之后发生。在创建MongoDB\Client实例(上面的代码中的socketTimeoutMS)时,我曾尝试增加$db而不解决问题。

0 个答案:

没有答案