(mongodb >=1.0.0)
MongoDB\Driver\BulkWrite::update — 新增更新操作到批次
將更新操作新增至 MongoDB\Driver\BulkWrite。
filter
(陣列|物件)» 查詢述詞。空的述詞將符合集合中的所有文件。
注意:在評估查詢條件時,MongoDB 會根據其自身的 » BSON 類型比較規則 來比較類型和值,這與 PHP 的 比較 和 類型轉換 規則不同。當匹配特殊的 BSON 類型時,查詢條件應使用各自的 BSON 類別(例如,使用 MongoDB\BSON\ObjectId 來匹配 » ObjectId)。
newObj
(陣列|物件)包含更新運算子(例如 $set
)、取代文件(即 *僅* field:value
表達式)或 » 聚合管道 的文件。
updateOptions
選項 | 類型 | 說明 | 預設值 |
---|---|---|---|
arrayFilters | 陣列 |
一個過濾器文件陣列,用於決定要修改哪些陣列元素,以對陣列欄位進行更新操作。有關更多資訊,請參閱 MongoDB 手冊中的 » 指定 arrayFilters 以進行陣列更新操作。 此選項在 MongoDB 3.6+ 中可用,如果為舊版伺服器指定,則會在執行時導致例外。 |
|
collation | 陣列|物件 |
» 排序規則 允許使用者指定用於字串比較的特定語言規則,例如字母大小寫和重音符號的規則。指定排序規則時, 如果未指定排序規則,但集合具有預設排序規則,則操作將使用為集合指定的排序規則。如果未為集合或操作指定排序規則,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);
?>