jenssegers/mongodb 中如何批量插入,遇到唯一索引就忽略错误?

xiaopi

问题描述

在webman中使用jenssegers/mongodb包,如果集合中已经存在相同的数据,再插入相同数据就会报错。请问有其他的方法可以批量插入吗?
伪代码类似,其中number+user_id是复合唯一索引:

$data = [
            [
                'number' => '22215800138000',
                'user_id' => 33,
                'remarks' => 1
            ],
            [
                'number' => '22215800138000',
                'user_id' => 33,
                'remarks' => 1
            ]

        ];
        User::query()->insert($data); //会报错This database engine does not support inserting while ignoring errors.

为此你搜索到了哪些方案及不适用的原因

  • 查询了jenssegers/mongodb的文档,发现并没有针对数据的批量处理,例如在mysql中使用upsert() insertOrIngnore()等类型的方法

  • 查询了mongodb手册发现,insertMany()可以增加参数ordered:false来使批量插入遇到唯一索引错误时,忽略此条,继续插入。但是jenssegers/mongodb包中未发现这类的写法

160 0 0
0个回答

🔝