(mongodb >=1.0.0)
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 例外。