codecamp

PHP8 MongoDB\Driver\Manager::executeBulkWrite

(mongoDB >=1.0.0)

MongoDB\Driver\Manager::executeBulkWrite — 执行一个或多个写入操作

说明

final public MongoDB\Driver\Manager::executeBulkWrite(string $namespace, MongoDB\Driver\BulkWrite $bulk, array|MongoDB\Driver\WriteConcern|null $options = null): MongoDB\Driver\WriteResult

在主服务器上执行一个或多个写入操作。

MongoDB\Driver\BulkWrite 可以使用 一个或多个不同类型的写入操作(例如更新、删除和 插入物)。驱动程序将尝试将相同类型的操作发送到 服务器在尽可能少的请求中优化往返。

参数 

namespace (字符串)

完全限定的命名空间(例如 )。"databaseName.collectionName"

bulk (MongoDB\驱动程序\批量写入)

要执行的写入。

options
选项
选择类型描述
会期MongoDB\驱动程序\会话

要与操作关联的会话。

写关注点MongoDB\驱动程序\WriteConcern

要应用于操作的写入关注点。

返回值 

成功后返回 MongoDB\Driver\WriteResult。

错误/异常 

  • 如果不包含任何写入操作,则抛出 MongoDB\Driver\Exception\InvalidArgumentException。bulk
  • 如果已执行,则抛出 MongoDB\Driver\Exception\InvalidArgumentException。MongoDB\Driver\BulkWrite 对象不能多次执行。bulk
  • 如果该选项与未确认的写入问题结合使用,则引发 MongoDB\Driver\Exception\InvalidArgumentException。"session"
  • 在参数分析错误时抛出 MongoDB\Driver\Exception\InvalidArgumentException。
  • 如果与服务器的连接失败(由于身份验证以外的原因),则抛出 MongoDB\Driver\Exception\ConnectionException。
  • 如果需要身份验证并失败,则抛出 MongoDB\Driver\Exception\AuthenticationException。
  • 在任何写入失败(例如写入错误、无法应用写入问题)时抛出 MongoDB\Driver\Exception\BulkWriteException
  • 在其他错误上抛出 MongoDB\Driver\Exception\RuntimeException。

更新日志 

版本说明
PECL mongodb 1.4.4MongoDB\Driver\Exception\InvalidArgumentException,如果在 与未确认的写入问题相结合。"session"
PECL mongodb 1.4.0第三个参数现在是一个数组。 为了向后兼容,此参数仍将接受 MongoDB\Driver\WriteConcern 对象。options
PECL mongodb 1.3.0MongoDB\Driver\Exception\InvalidArgumentException现在被抛出,如果不包含任何写入 操作。以前,MongoDB\Driver\Exception\BulkWriteException 是 扔。bulk

示例 

示例 #1 MongoDB\Driver\Manager::executeBulkWrite() example

<?php

$bulk = new MongoDB\Driver\BulkWrite();

$bulk->insert(['_id' => 1, 'x' => 1]);
$bulk->insert(['_id' => 2, 'x' => 2]);

$bulk->update(['x' => 2], ['$set' => ['x' => 1]], ['multi' => false, 'upsert' => false]);
$bulk->update(['x' => 3], ['$set' => ['x' => 3]], ['multi' => false, 'upsert' => true]);
$bulk->update(['_id' => 3], ['$set' => ['x' => 3]], ['multi' => false, 'upsert' => true]);

$bulk->insert(['_id' => 4, 'x' => 2]);

$bulk->delete(['x' => 1], ['limit' => 1]);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 100);
$result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);

printf("Inserted %d document(s)\n", $result->getInsertedCount());
printf("Matched  %d document(s)\n", $result->getMatchedCount());
printf("Updated  %d document(s)\n", $result->getModifiedCount());
printf("Upserted %d document(s)\n", $result->getUpsertedCount());
printf("Deleted  %d document(s)\n", $result->getDeletedCount());

foreach ($result->getUpsertedIds() as $index => $id) {
    printf('upsertedId[%d]: ', $index);
    var_dump($id);
}

/* If the WriteConcern could not be fulfilled */
if ($writeConcernError = $result->getWriteConcernError()) {
    printf("%s (%d): %s\n", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true));
}

/* If a write could not happen at all */
foreach ($result->getWriteErrors() as $writeError) {
    printf("Operation#%d: %s (%d)\n", $writeError->getIndex(), $writeError->getMessage(), $writeError->getCode());
}
?>

以上示例的输出类似于:

Inserted 3 document(s)
Matched  1 document(s)
Updated  1 document(s)
Upserted 2 document(s)
Deleted  1 document(s)
upsertedId[3]: object(MongoDB\BSON\ObjectId)#5 (1) {
  ["oid"]=>
  string(24) "54d3adc3ce7a792f4d703756"
}
upsertedId[4]: int(3)

参见 

  • MongoDB\驱动程序\批量写入
  • MongoDB\驱动程序\WriteResult
  • MongoDB\驱动程序\WriteConcern
  • MongoDB\Driver\Server::executeBulkWrite() - 在此服务器上执行一个或多个写入操作


PHP8 MongoDB\Driver\Manager::createClientEncryption
PHP8 MongoDB\Driver\Manager::executeCommand
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PHP8 语言参考

PHP8 函数参考

PHP8 影响 PHP 行为的扩展

PHP8 Componere

PHP8 安装/配置

PHP8 外部函数接口

PHP8 选项和信息

PHP8 选项/信息 函数

PHP8 Windows Cache for PHP

PHP8 WinCache 函数

PHP8 Yac

PHP8 身份认证服务

PHP8 Radius 函数

PHP8 压缩与归档扩展

PHP8 Phar

PHP8 Zip

PHP8 ZipArchive 类

PHP8 加密扩展

PHP8 OpenSSL

PHP8 OpenSSL 函数

PHP8 Sodium 函数

PHP8 数据库扩展

PHP8 针对各数据库系统对应的扩展

PHP8 CUBRID 函数

PHP8 Firebird/InterBase

PHP8 Firebird/InterBase函数

PHP8 MongoDB介绍驱动程序体系结构和特殊功能

PHP8 MongoDB\Driver\Command 类

PHP8 MongoDB\Driver\Query 类

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }