PHP Conference Japan 2024

MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeQuery執行資料庫查詢

說明

final public MongoDB\Driver\Manager::executeQuery(字串 $namespace, MongoDB\Driver\Query $query, 陣列|MongoDB\Driver\ReadPreference|null $options = null): MongoDB\Driver\Cursor

根據 "readPreference" 選項選擇伺服器,並在該伺服器上執行查詢。

選項 "readPreference" 和查詢選項 "readConcern" 的預設值將會從活動交易(由 "session" 選項指示)推斷,然後從連線 URI推斷。

參數

namespace (字串)

一個完整的命名空間(例如 "databaseName.collectionName")。

query (MongoDB\Driver\Query)

要執行的查詢。

選項

選項
選項名稱 類型 說明
readPreference MongoDB\Driver\ReadPreference

用於選擇操作伺服器的讀取偏好設定。

session MongoDB\Driver\Session

要與操作關聯的階段作業。

回傳值

成功時回傳 MongoDB\Driver\Cursor

錯誤/例外

更新日誌

版本 說明
PECL mongodb 1.4.0 第三個參數現在是一個 options 陣列。為了向下相容,此參數仍將接受 MongoDB\Driver\ReadPreference 物件。

範例

範例 #1 MongoDB\Driver\Manager::executeQuery() 範例

<?php

$manager
= new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);

$filter = ['x' => ['$gt' => 1]];
$options = [
'projection' => ['_id' => 0],
'sort' => ['x' => -1],
];

$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);

foreach (
$cursor as $document) {
var_dump($document);
}

?>

以上範例將輸出

object(stdClass)#6 (1) {
  ["x"]=>
  int(3)
}
object(stdClass)#7 (1) {
  ["x"]=>
  int(2)
}

範例 #2 限制查詢的執行時間

"maxTimeMS" MongoDB\Driver\Query 選項可以用來限制查詢的執行時間。請注意,此時間限制是在伺服器端強制執行的,並且不考慮網路延遲。更多資訊請參考 MongoDB 手冊中的 » 終止執行中的操作

<?php

$manager
= new MongoDB\Driver\Manager('mongodb://127.0.0.1:27017');

$filter = ['x' => ['$gt' => 1]];
$options = [
'maxTimeMS' => 1000,
];

$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);

foreach (
$cursor as $document) {
var_dump($document);
}

?>

如果查詢在伺服器上執行一秒後仍未完成,則會拋出 MongoDB\Driver\Exception\ExecutionTimeoutException 例外。

新增註記

使用者提供的註記

此頁面沒有使用者提供的註記。
To Top