2024 日本 PHP 研討會

MongoDB\Driver\BulkWrite::update

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::update新增更新操作到批次

說明

公開 MongoDB\Driver\BulkWrite::update(陣列|物件 $filter, 陣列|物件 $newObj, ?陣列 $updateOptions = null):

將更新操作新增至 MongoDB\Driver\BulkWrite

參數

filter (陣列|物件)

» 查詢述詞。空的述詞將符合集合中的所有文件。

注意在評估查詢條件時,MongoDB 會根據其自身的 » BSON 類型比較規則 來比較類型和值,這與 PHP 的 比較類型轉換 規則不同。當匹配特殊的 BSON 類型時,查詢條件應使用各自的 BSON 類別(例如,使用 MongoDB\BSON\ObjectId 來匹配 » ObjectId)。

newObj (陣列|物件)

包含更新運算子(例如 $set)、取代文件(即 *僅* field:value 表達式)或 » 聚合管道 的文件。

updateOptions

updateOptions
選項 類型 說明 預設值
arrayFilters 陣列

一個過濾器文件陣列,用於決定要修改哪些陣列元素,以對陣列欄位進行更新操作。有關更多資訊,請參閱 MongoDB 手冊中的 » 指定 arrayFilters 以進行陣列更新操作

此選項在 MongoDB 3.6+ 中可用,如果為舊版伺服器指定,則會在執行時導致例外。

collation 陣列|物件

» 排序規則 允許使用者指定用於字串比較的特定語言規則,例如字母大小寫和重音符號的規則。指定排序規則時,"locale" 欄位是必填的;所有其他排序規則欄位都是選用的。有關欄位的說明,請參閱 » 排序規則文件

如果未指定排序規則,但集合具有預設排序規則,則操作將使用為集合指定的排序規則。如果未為集合或操作指定排序規則,MongoDB 將使用先前版本中用於字串比較的簡單二進位比較。

此選項在 MongoDB 3.4+ 中可用,如果為舊版伺服器指定,則會在執行時導致例外。

hint 字串|陣列|物件

索引規格。指定索引名稱(字串)或索引鍵模式。如果指定,則查詢系統將只考慮使用提示索引的計劃。

此選項在 MongoDB 4.2+ 版本中可用,如果在舊版伺服器上指定,則會在執行時產生例外狀況。

多筆更新 布林值 如果為 false,則僅更新第一個符合的文件;如果為 true,則更新所有符合的文件。如果 newObj 是取代文件,則此選項不能為 true false
upsert 布林值 如果 filter 沒有匹配任何現有文件,則插入「單個」文件。如果 newObj 是取代文件(即沒有更新運算子),則將根據 newObj 建立文件;否則,將 newObj 中的運算子應用於 filter 來建立新文件。 false

傳回值

不傳回任何值。

錯誤/例外

更新日誌

版本 說明
PECL mongodb 1.7.0 新增了 "hint" 選項。
PECL mongodb 1.6.0 newObj 參數現在接受聚合管道。此功能需要 MongoDB 4.2+,如果在舊版伺服器上指定,則會在執行時產生例外狀況。
PECL mongodb 1.5.0 如果伺服器不支援 "arrayFilters" 選項,則在執行時會產生例外狀況。先前,不會拋出任何例外狀況,並且該選項可能已被忽略。
PECL mongodb 1.4.0 新增了 "arrayFilters" 選項。
PECL mongodb 1.2.0 新增了 "collation" 選項。

範例

範例 #1 MongoDB\Driver\BulkWrite::update() 範例

<?php

$bulk
= new MongoDB\Driver\BulkWrite;
$bulk->update(
[
'x' => 2],
[
'$set' => ['y' => 3]],
[
'multi' => false, 'upsert' => false]
);

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

?>

另請參閱

新增註記

使用者貢獻的註記

此頁面沒有使用者貢獻的註記。
To Top