(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://: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://: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 例外。