donglu6805 2016-09-28 08:30
浏览 43

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,
        ]
    );
}
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog
    • ¥15 Excel发现不可读取的内容
    • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
    • ¥20 yolov5自定义Prune报错,如何解决?