PHP Mongo Cursor循环失败

I'm looping a queried mongodb cursor in php to index documents in elastic.

The indexing process breaks as I randomly get following error in the cursor loop:

======================================================================
   The application has thrown an exception!
======================================================================
 MongoDB\Driver\Exception\UnexpectedValueException
 Could not convert BSON document to a PHP variable
----------------------------------------------------------------------

It happens in this line:

foreach ($webpageCursor as $id => $webpage) {...

I'm not even able to output the maybe invalid object, so I don't know which one is causing it.

Is there a way to avoid this problem?

EDIT:

Here the cursor creation code:

/**
 * Get webpages
 *
 * @param string $database The database name
 * @param int $limit The limit for the query
 * @return \MongoCursor
 */
public function getDocumentsCursor($database, $limit = null)
{
    $mongoClient = $this->getMongoDbService()->getMongoDbClient();

    $collection = $mongoClient->selectCollection($database, 'documents');

    return $collection->find(
        [
            'text' => [
                '$exists' => true
            ],
            'parsed' => [
                '$ne' => new \MongoDB\BSON\UTCDateTime(-62135596800000),
            ],
            'fetched' => [
                '$ne' => new \MongoDB\BSON\UTCDateTime(-62135596800000),
            ],
            'pointsToCanoncial' => [
                '$ne' => true
            ],
            'noIndex' => [
                '$ne' => true
            ],
            'lastStatusCode' => [
                '$gte' => 200,
                '$lt' => 300
            ]
        ],
        [
            'noCursorTimeout' => true,
            'projection' => [
                '_id' => true,
                'meta' => true,
                'url' => true,
                'text' => true,
                'contentType', true,
                'header' => true,
                'inlinks' => true,
            ],
            'limit' => $limit,
        ]
    );
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐