MongoDB数据库写入单条记录数据在批量写入错误问题

浏览:1498 发布日期:2018/04/01 分类:ThinkPHP5专区 关键字: MongoDB
在mogodb数据库写入数据是,先写入使用insert()方法添加一条记录,在使用insertAll()方法添加数据的时候程序会报错,并且提示“Cannot use object of type MongoDB\BSON\objectId as array
因为在执行单条添加的时候“$this->insertId”被复制为数字类型,在执行批量插入的时候有被当作数组对象去执行,在PHP7.1环境下程序报错。如果在如果在Bulder.php类文件393行重置$this->insertId可以解决这个问题$this->insertId=[];文件位置:vendor\topthink\think-mongo\src\Builder.php
public function insertAll(Query $query, $dataSet)
    {
        $bulk    = new BulkWrite;
        $options = $query->getOptions();

        foreach ($dataSet as $data) {
            // 分析并处理数据
            $data = $this->parseData($query, $data);
            if ($insertId = $bulk->insert($data)) {
                $this->insertId[] = $insertId;
            }
        }

        $this->log('insert', $dataSet, $options);

        return $bulk;
    }

附件 QQ截图20180401172101.png ( 95.4 KB 下载:4 次 )

最佳答案
评论( 相关
后面还有条评论,点击查看>>