(mongodb >=1.0.0)
MongoDB\Driver\Query::__construct — 建立新的查詢
建構一個新的 MongoDB\Driver\Query 物件,這是一個不可變的值物件,表示一個資料庫查詢。此查詢可以使用 MongoDB\Driver\Manager::executeQuery() 執行。
filter
(陣列|物件)» 查詢述詞。空的述詞將會匹配集合中的所有文件。
注意:在評估查詢條件時,MongoDB 會根據其本身的 » BSON 類型比較規則 比較類型和值,這與 PHP 的 比較 和 類型轉換 規則不同。當匹配特殊的 BSON 類型時,查詢條件應該使用相對應的 BSON 類別(例如,使用 MongoDB\BSON\ObjectId 來匹配 » ObjectId)。
queryOptions
選項 | 類型 | 說明 |
---|---|---|
allowDiskUse | 布林值 |
允許 MongoDB 在處理阻塞排序操作時,使用暫存磁碟檔案來儲存超過 100 MB 系統記憶體限制的資料。 |
allowPartialResults | 布林值 |
對於針對分片集合的查詢,如果某些分片無法使用,則從 mongos 返回部分結果,而不是拋出錯誤。 如果未指定,則會回到已棄用的 |
awaitData | 布林值 | 與 "tailable" 選項一起使用,如果在資料結尾而不是返回無資料時,會暫時阻塞游標上的 getMore 操作。逾時後,查詢會正常返回。 |
batchSize | 整數 |
在第一批中返回的文件數量。預設為 101。批次大小為 0 表示將建立游標,但在第一批中不會返回任何文件。 在 3.2 之前的 MongoDB 版本中,如果查詢使用舊版網路協議 OP_QUERY,則無論匹配的文件數量為何,批次大小為 1 都將關閉游標。 |
collation | 陣列|物件 |
» 排序規則 允許使用者指定字串比較的語言特定規則,例如字母大小寫和重音符號的規則。指定排序規則時, 如果未指定排序規則,但集合具有預設排序規則,則操作會使用為集合指定的排序規則。如果未為集合或操作指定排序規則,MongoDB 會使用先前版本中用於字串比較的簡單二進位比較。 此選項在 MongoDB 3.4+ 中可用,如果為較舊的伺服器版本指定,則會在執行時導致例外。 |
comment | 混合 |
任意註釋,有助於透過資料庫分析器、currentOp 輸出和日誌追蹤操作。 註解可以是任何有效的 BSON 類型,適用於 MongoDB 4.4 以上版本。較早的伺服器版本僅支援字串值。 如果未指定,則會使用已棄用的 |
exhaust(全部提取) | 布林值 |
以多個「更多」封包的形式高速串流傳輸數據,假設客戶端將完全讀取所有查詢的數據。當您提取大量數據並且知道您想要提取所有數據時,速度更快。注意:除非客戶端關閉連線,否則不允許不讀取所有數據。 MongoDB 3.2+ 中的 find 命令不支援此選項,並將強制驅動程式使用舊版 wire protocol 版本(即 OP_QUERY)。 |
explain(解釋) | 布林值 |
如果為 如果未指定,則會使用已棄用的 MongoDB 3.2+ 中的 find 命令不支援此選項,並且僅在使用舊版 wire protocol 版本(即 OP_QUERY)時才會被考慮。在 MongoDB 3.0+ 上應使用 » explain 命令。 |
hint(提示) | 字串|陣列|物件 |
索引規範。以字串指定索引名稱或索引鍵模式。如果指定,則查詢系統將僅考慮使用提示索引的計劃。 如果未指定,則會使用已棄用的 |
let(讓) | 陣列|物件 |
參數名稱和值的映射。值必須是常數或不參考文件欄位的閉合表達式。然後可以在聚合表達式上下文中(例如 此選項在 MongoDB 5.0+ 中可用,如果為較舊的伺服器版本指定,則會在執行時導致例外狀況。 |
limit(限制) | 整數 |
要返回的最大文件數。如果未指定,則預設為無限制。限制為 0 等同於設定無限制。 負限制將被解釋為正限制,並將 |
max(最大值) | 陣列|物件 |
特定索引的不包含上限。 如果未指定,則會使用已棄用的 |
maxAwaitTimeMS(最大等待時間,毫秒) | 整數 |
正整數,表示伺服器在沒有可用數據時阻塞 getMore 操作的時間限制(以毫秒為單位)。此選項應僅與 |
maxScan(最大掃描數量) | 整數 |
警告
此選項已棄用,不應使用。 正整數,表示執行查詢時要掃描的最大文件數或索引鍵數。 如果未指定,則會使用已棄用的 |
maxTimeMS(最大時間,毫秒) | 整數 |
處理游標操作的累積時間限制(以毫秒為單位)。MongoDB 會在最早的下一個中斷點中止操作。 如果未指定,則會使用已棄用的 |
min(最小值) | 陣列|物件 |
特定索引的包含下限。 如果未指定,則會使用已棄用的 |
修飾器 | 陣列 | » 元運算子,用於修改查詢的輸出或行為。建議使用具名選項來取代這些運算子的使用。 |
noCursorTimeout | 布林值 | 防止伺服器在閒置一段時間(10 分鐘)後讓閒置的游標逾時。 |
oplogReplay | 布林值 |
複寫集的內部使用。要使用 oplogReplay,您必須在過濾器中包含以下條件
[ 'ts' => [ '$gte' => <timestamp> ] ]
|
projection | 陣列|物件 |
» 投影規範,用於決定要在返回的文檔中包含哪些欄位。 如果您正在使用 ODM 功能 將文檔反序列化為其原始的 PHP 類別,請確保您在投影中包含 __pclass 欄位。這是反序列化運作所必需的,如果沒有它,擴充功能將會(預設)返回一個 stdClass 物件。 |
readConcern | MongoDB\Driver\ReadConcern |
要套用至操作的讀取關注。預設情況下,將使用來自 MongoDB 連線 URI 的讀取關注。 此選項在 MongoDB 3.2+ 中可用,如果為較舊的伺服器版本指定,將會在執行時導致例外。 |
returnKey | 布林值 |
如果為 如果未指定,則會回到已棄用的 |
showRecordId | 布林值 |
決定是否返回每個文檔的記錄識別碼。如果為 如果未指定,則會回到已棄用的 |
singleBatch | 布林值 | 決定是否在第一批之後關閉游標。預設為 false 。 |
skip | 整數 | 要略過的文檔數。預設為 0。 |
snapshot | 布林值 |
警告
此選項已棄用,不應使用。 防止游標因中間的寫入操作而多次返回同一個文檔。 如果未指定,則會回到已棄用的 |
sort | 陣列|物件 |
結果排序的排序規範。 如果未指定,則會回到已棄用的 |
tailable | 布林值 | 返回固定集合的可尾隨游標。 |
版本 | 說明 |
---|---|
PECL mongodb 1.14.0 |
新增了 |
PECL mongodb 1.8.0 |
新增了
|
PECL mongodb 1.5.0 |
|
PECL mongodb 1.3.0 |
新增了 |
PECL mongodb 1.2.0 |
新增了 將 移除了過時的 |
PECL mongodb 1.1.0 | 新增了 "readConcern" 選項。 |
範例 #1 MongoDB\Driver\Query::__construct() 範例
<?php
/* 選擇只有 "bjori" 撰寫且至少有 100 個瀏覽次數的文件 */
$filter = [
'author' => 'bjori',
'views' => [
'$gte' => 100,
],
];
$options = [
/* 只回傳符合條件文件中以下欄位 */
'projection' => [
'title' => 1,
'article' => 1,
],
/* 以瀏覽次數遞減排序回傳文件 */
'sort' => [
'views' => -1
],
];
$query = new MongoDB\Driver\Query($filter, $options);
$manager = new MongoDB\Driver\Manager('mongodb://127.0.0.1:27017');
$readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::PRIMARY);
$cursor = $manager->executeQuery('databaseName.collectionName', $query, $readPreference);
foreach($cursor as $document) {
var_dump($document);
}
?>