PHP Conference Japan 2024

MongoDB\Driver\Query 類別

(mongodb >=1.0.0)

簡介

MongoDB\Driver\Query 類別是一個值物件,表示資料庫查詢。

類別概要

final class MongoDB\Driver\Query {
/* 方法 */
final public __construct(array|object $filter, ?array $queryOptions = null)
}

目錄

新增筆記

使用者貢獻的筆記 5 則筆記

maha88a
8 年前
以下是如何使用篩選器從 MangoDB 集合中檢索記錄的查詢範例。在這種情況下,它只會返回滿足篩選器 id = 2 的一條記錄。

考慮以下 MangoDB 集合

<?php
/* my_collection */

/* 1 */
{
"_id" : ObjectId("5707f007639a94cbc600f282"),
"id" : 1,
"name" : "Name 1"
}

/* 2 */
{
"_id" : ObjectId("5707f0a8639a94f4cd2c84b1"),
"id" : 2,
"name" : "Name 2"
}
?>

我使用以下程式碼
<?php
$filter
= ['id' => 2];
$options = [
'projection' => ['_id' => 0],
];
$query = new MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('db_name.my_collection', $query); // $mongo 包含 MongoDB 的連線物件
foreach($rows as $r){
print_($r);
}
?>
yatiny3007 at gmail dot com
7 年前
透過 _id 尋找

$mongo = new \MongoDB\Driver\Manager('mongodb://root:root@192.168.0.127/db');

$id = new \MongoDB\BSON\ObjectId("588c78ce02ac660426003d87");
$filter = ['_id' => $id];
$options = [];

$query = new \MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('db.collectionName', $query);

foreach ($rows as $document) {
pr($document);
}
tiwaritusharudayan at gmail dot com
6 年前
此格式將查詢返回的文檔顯示為 stdClass 物件。就顯示而言,這樣沒問題,但如果需要使用返回的文檔及其對應欄位執行某些計算,請使用以下方法

------------------------------------程式碼片段-----------------------------------

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

$filter = ["name"=>"在此插入所需名稱"];
/* 以下條件以及其他類似條件也適用

$filter = ["age"=>["$gt"=>"18"]]; /*/

$options = []; /* 如果需要,請在此處放置所需的選項 */

$query = new MongoDB\Driver\Query($filter,$options);

$documents = $connection->executeQuery('trial.trial' /*資料庫名稱.集合名稱*/,$query);

foreach($documents as $document){
$document = json_decode(json_encode($document),true);
echo $document['name'];
}

--------------------------------------------------------------------------------------

foreach 迴圈中的第一個可執行語句將返回的 stdClass 物件編碼為 json 物件,並立即將其解碼為關聯陣列,然後即可根據需要使用
dvdogrady at gmail dot com
7 年前
您好

我寫這段筆記是為了幫助那些想要在 `$filter` 陣列中使用查詢運算子的人。

我複製了 maha88a 筆記中的這段程式碼,但我更改了 `$filter` 讓您了解它如何與查詢運算子一起使用。

考慮以下 MangoDB 集合

<?php
/* my_collection */

/* 1 */
{
"_id" : ObjectId("5707f007639a94cbc600f282"),
"id" : 1,
"name" : "Name 1"
}

/* 2 */
{
"_id" : ObjectId("5707f0a8639a94f4cd2c84b1"),
"id" : 2,
"name" : "Name 2"
}
?>

我使用以下程式碼
<?php
// 這個 $filter 將返回任何等於 2 的 id,但如果我們想要所有大於 0 的 id 呢?
// $filter = ['id' => 2];
// 我們可以這樣做:
$filter = ['id' => ['$gt' => 0]]
$options = [
'projection' => ['_id' => 0],
];
$query = new MongoDB\Driver\Query($filter, $options);
$rows = $mongo->executeQuery('db_name.my_collection', $query); // $mongo 包含 MongoDB 的連線物件
foreach($rows as $r){
print_($r);
}
?>
jaimegarbanzo at gmail dot com
3 年前
# 建立到遠端伺服器的連線、查詢並將結果限制為最新的 3 個結果

$username ="您的使用者名稱";
$password = "您的密碼";

$manager = new MongoDB\Driver\Manager("mongodb://yourserver.com/",
array("username" => $username, "password" => $password )
);

# 設定選項和篩選器
$filter = [];
$options = ['sort'=>array('_id'=>-1),'limit'=>3]; # 限制 -1 從最新到最舊

#建構查詢
$query = new MongoDB\Driver\Query($filter, $options);

#執行
$cursor = $manager->executeQuery('resultdb.test', $query);

echo "傾印結果<br>";
foreach ($cursor as $document) {
var_dump($document);
}
To Top