(mongodb >=1.0.0)
MongoDB\Driver\Server::executeCommand — 在此伺服器上執行資料庫命令
$db, MongoDB\Driver\Command $command, 陣列|MongoDB\Driver\ReadPreference|null $options = null): MongoDB\Driver\Cursor在此伺服器上執行指令。
此方法不會對指令套用任何特殊邏輯。選項 "readPreference"、"readConcern" 和 "writeConcern" 的預設值將從活動交易(由 "session" 選項指示)推斷而來。如果沒有活動交易,將使用主要讀取偏好設定來選擇伺服器。
預設值*不會*從連線 URI 推斷。因此,鼓勵使用者盡可能使用特定的讀取和/或寫入指令方法。
注意:
"readPreference"選項不會控制驅動程式發出操作的伺服器;它將始終在此伺服器物件上執行。相反地,當對輔助節點(來自複寫集連線,而非獨立節點)或 mongos 節點發出操作時,可以使用它來確保驅動程式相應地設定線路協定或將讀取偏好設定新增至操作。
db (字串)要執行指令的資料庫名稱。
command (MongoDB\Driver\Command)要執行的指令。
選項
| 選項 | 類型 | 說明 |
|---|---|---|
| readConcern | MongoDB\Driver\ReadConcern |
套用於操作的讀取關注。 此選項在 MongoDB 3.2+ 中可用,如果為較舊的伺服器版本指定,則會在執行時導致例外。 |
| readPreference | MongoDB\Driver\ReadPreference |
用於選擇操作伺服器的讀取偏好設定。 |
| session | MongoDB\Driver\Session |
與操作關聯的階段作業。 |
| writeConcern | MongoDB\Driver\WriteConcern |
套用於操作的寫入關注。 |
如果您使用的是正在進行交易的 "session",則無法指定 "readConcern" 或 "writeConcern" 選項。這將導致擲出 MongoDB\Driver\Exception\InvalidArgumentException。相反地,您應該在使用 MongoDB\Driver\Session::startTransaction() 建立交易時設定這兩個選項。
成功時傳回 MongoDB\Driver\Cursor。
"session" 選項與相關聯的交易以及 "readConcern" 或 "writeConcern" 選項一起使用,則會擲出 MongoDB\Driver\Exception\InvalidArgumentException。"session" 選項與未確認的寫入關注一起使用,則會擲出 MongoDB\Driver\Exception\InvalidArgumentException。
| 版本 | 說明 |
|---|---|
| PECL mongodb 1.4.4 |
如果"session"選項與未確認寫入關注搭配使用,將會拋出MongoDB\Driver\Exception\InvalidArgumentException例外。 |
| PECL mongodb 1.4.0 | 第三個參數現在是一個 options 陣列。為了向後相容,此參數仍然接受 MongoDB\Driver\ReadPreference 物件。 |
注意: 確保伺服器能夠執行寫入操作是呼叫者的責任。例如,在副本集的次要節點(不包括其「local」資料庫)上執行寫入操作將會失敗。