MongoDB\Collection::insertMany()
定义
参数
$documents
: 数组- 要插入集合中的文档。
$options
: 数组指定所需选项的数组。
名称类型描述bypassDocumentValidation布尔值如果true
,允许写操作绕过文档级别的验证。默认为false
。codecMongoDB\Codec\DocumentCodec注释mixedordered布尔值如果
true
:单个写操作失败时,操作将停止,不执行剩余的写操作,并抛出异常。如果
false
:单个写操作失败时,如果还有剩余的写操作,操作将继续执行,并抛出异常。默认为
true
。session与操作关联的客户端会话。
New自版本1.3.
writeConcern
返回值
一个 MongoDB\InsertManyResult
对象,该对象封装了一个 MongoDB\Driver\WriteResult 对象。
错误/异常
MongoDB\Exception\InvalidArgumentException
与参数或选项解析相关的错误。
MongoDB\Driver\Exception\BulkWriteException 用于处理写入操作相关的错误。用户应检查 getWriteResult() 返回的值以确定错误的性质。
MongoDB\Driver\Exception\RuntimeException 用于处理扩展级别(例如连接错误)的其他错误。
行为
如果抛出了 MongoDB\Driver\Exception\BulkWriteException 异常,用户应调用 getWriteResult() 并检查返回的 MongoDB\Driver\WriteResult 对象以确定错误性质。
例如,一个写操作可能已成功应用于主服务器,但未能满足写关注(例如,复制时间过长)。或者,写操作可能直接失败(例如,违反了唯一键)。
在大量写操作的情况下,结果可能指示多个成功的写操作和/或错误。如果 ordered
选项为 true
,则可能在遇到第一个错误并抛出异常之前,一些操作已成功执行。如果 ordered
选项为 false
,则可能遇到多个错误。
示例
以下操作将两个文档插入到 users
集合中的 test
数据库。
$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" } }
另请参阅
insert 命令参考,请参阅 MongoDB 手册