MongoDB - PHP:初學者指南

你好,未來的數據庫大師!? 我很高興能成為你進入MongoDB和PHP世界的引路人。作為一個教了多年計算機科學的人,我見過無數學生在掌握這些概念時眼睛發亮。那麼,讓我們一起跳進去,一起創造數據庫的魔法吧!

MongoDB - PHP

建立連接和選擇數據庫

在我們能夠做任何花哨的事情之前,我們需要連接到MongoDB伺服器並選擇一個數據庫。可以把這想像成敲開一座巨大圖書館的門,並請求讓我們進入。

這是我們如何操作的:

<?php
// 創建一個新的MongoDB客戶端
$client = new MongoDB\Client("mongodb://localhost:27017");

// 選擇一個數據庫
$database = $client->selectDatabase("myAwesomeDB");

echo "成功連接到數據庫!";
?>

讓我們分解一下:

  1. 我們創建了一個新的MongoDB客戶端,並告訴它我們的MongoDB伺服器在哪裡(在這個例子中,它在本地機器上)。
  2. 然後我們選擇名為 "myAwesomeDB" 的數據庫。如果它不存在,MongoDB會為我們創建它。這不是很棒嗎?

專業提示:總是要檢查你的連接是否成功。在真實世界的情況下,你會想用try-catch語句包起這個來優雅地處理任何連接錯誤。

創建集合

現在我们在數據庫中,我們需要一個地方來存儲我們的數據。在MongoDB中,我們稱這些地方為 "集合"。可以把集合想像成文件櫃中的一個抽屜。

這是我們如何創建的:

<?php
// 創建一個新的集合
$collection = $database->createCollection("myFirstCollection");

echo "集合創建成功!";
?>

簡單吧?我們只是告訴我們的數據庫創建一個名為 "myFirstCollection" 的新集合。如果集合已經存在,MongoDB會簡單地返回現有的集合。

插入文件

現在讓我們在我們閃亮的新集合中放入一些東西!在MongoDB中,我們存儲數據作為 "文件"。這些文件很像你之前可能見過的JSON對象。

讓我們添加一個關於可愛貓咪的文件:

<?php
$document = [
"name" => "Whiskers",
"age" => 3,
"color" => "orange",
"likes" => ["午睡", "魚", "激光指針"]
];

$insertResult = $collection->insertOne($document);

echo "插入的文件ID為: " . $insertResult->getInsertedId();
?>

這裡發生了什麼:

  1. 我們創建了一個數組,代表我們的文件。它有各種描述我們貓咪的字段。
  2. 我們使用 insertOne() 方法將這個文件添加到我們的集合中。
  3. MongoDB給每個文件一個唯一的ID,我們可以使用 getInsertedId() 检索它。

查找所有文件

現在我們有了一些數據,讓我們把它們找回來。我們將使用 find() 方法來獲取我們集合中的所有文件:

<?php
$cursor = $collection->find();

foreach ($cursor as $document) {
echo "名稱: " . $document["name"] . ",年齡: " . $document["age"] . "\n";
}
?>

這段代碼會打印出集合中每隻貓的名字和年齡。find() 方法返回一個游標,我們可以遍歷它來訪問每個文件。

更新文件

哎呀!我們剛剛發現Whiskers過生日了。讓我們更新他的年齡:

<?php
$updateResult = $collection->updateOne(
["name" => "Whiskers"],
['$set' => ["age" => 4]]
);

echo "匹配了 " . $updateResult->getMatchedCount() . " 個文件\n";
echo "修改了 " . $updateResult->getModifiedCount() . " 個文件";
?>

這裡發生了什麼:

  1. 我們使用 updateOne() 方法來尋找名字是 "Whiskers" 的文件。
  2. 然後我們使用 $set 運算符將年齡改為4。
  3. 方法返回關於匹配和修改了多少文件的信息。

删除文件

有時候,我們需要刪除數據。假設Whiskers找到了一個新家(別擔心,他在那裡非常快樂!)。我們可以像這樣刪除他的文件:

<?php
$deleteResult = $collection->deleteOne(["name" => "Whiskers"]);

echo "刪除了 " . $deleteResult->getDeletedCount() . " 個文件";
?>

這段代碼會找到名字是 "Whiskers" 的文件並刪除它。getDeletedCount() 方法告訴我們刪除了多少文件。

MongoDB PHP 方法

這裡是我們已經涵蓋的主要MongoDB PHP方法的便捷表格:

方法 描述
new MongoDB\Client() 創建一個新的MongoDB客戶端
selectDatabase() 選擇一個數據庫
createCollection() 創建一個新的集合
insertOne() 插入一個文件
find() 從集合中檢索文件
updateOne() 更新一個文件
deleteOne() 刪除一個文件

然後就是!你剛剛學會了使用PHP操作MongoDB的基本知識。記住,熟能生巧,所以不要害怕嘗試這些方法。試著創建不同的集合,插入各種類型的文件,並玩轉更複雜的查詢。

在我多年的教學中,我發現那些跳進去並親自寫代碼的學生才能真正掌握這些概念。所以,年輕的學徒,勇往直前吧,願數據庫與你同在!??

Credits: Image by storyset