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 手册