MongoDB\Collection::insertMany()
定义
参数
$documents
: array- 要插入到collection中的文档。
$options
: array指定所需选项的数组。
名称类型说明bypassDocumentValidation布尔如果为true
,则允许写入操作规避文档级验证。默认为false
。编解码器MongoDB\Codec\DocumentCodeccomment混合ordered布尔如果
true
:当单次写入失败时,操作将停止,不执行剩余写入,并抛出异常。如果
false
:当单次写入失败时,操作将继续执行剩余的写入(如有),并抛出异常。默认为
true
。会话与操作相关联的客户端会话。
1.3 版本中的新增功能。
writeConcern
Return Values
一个MongoDB\InsertManyResult
对象,其中封装了 MongoDB\Driver\WriteResult 对象。
错误/异常
MongoDB\Exception\InvalidArgumentException
用于与参数或选项解析相关的错误。
MongoDB\Driver\Exception\BulkWriteException 与写入操作相关的错误。用户应检查 getWriteResult() 返回的值 以确定错误的性质。
MongoDB\ 驱动程序\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
行为
如果 MongoDB\Driver\Exception\BulkWriteException 抛出,用户应调用 getWriteResult() 并检查返回的 MongoDB\Driver\WriteResult 对象以确定错误的性质。
例如,写入操作可能已成功应用于主服务器,但未能满足写关注(例如复制时间太长)。或者,写入操作可能完全失败(例如唯一键冲突)。
在批量写入的情况下,结果可能指示多个成功的写入操作和/或错误。 如果ordered
选项为true
,则在遇到第一个错误和抛出异常之前,某些操作可能已成功。 如果ordered
选项为false
,则可能遇到多个错误。
例子
以下操作将两个文档插入 test
数据库的 users
集合中:
$collection = (new MongoDB\Client)->test->users; $insertManyResult = $collection->insertMany([ [ 'username' => 'admin', 'email' => 'admin@example.com', 'name' => 'Admin User', ], [ 'username' => 'test', 'email' => 'test@example.com', 'name' => 'Test User', ], ]); printf("Inserted %d document(s)\n", $insertManyResult->getInsertedCount()); var_dump($insertManyResult->getInsertedIds());
而输出将类似如下所示:
Inserted 2 document(s) array(2) { [0]=> object(MongoDB\BSON\ObjectId)#11 (1) { ["oid"]=> string(24) "579a25921f417dd1e5518141" } [1]=> object(MongoDB\BSON\ObjectId)#12 (1) { ["oid"]=> string(24) "579a25921f417dd1e5518142" } }