MongoDB - PHP: 基礎ガイド
こんにちは、未来のデータベース魔术師たち!? MongoDBとPHPの世界に足を踏み入れるこの興奮的な旅にお連れします。コンピュータサイエンスを多年間教えてきた者として、これらの概念を理解したときに生徒たちが目を輝かせるのを見てきました。では、一緒にデータベースの魔法を創りましょう!
接続とデータベースの選択
何か派手なことをする前に、MongoDBサーバーに接続し、データベースを選択する必要があります。これを、巨大な図書館のドアをノックして中に入りたいときに例えることができます。
以下のようにします:
<?php
// 新しいMongoDBクライアントを作成
$client = new MongoDB\Client("mongodb://localhost:27017");
// データベースを選択
$database = $client->selectDatabase("myAwesomeDB");
echo "データベースに無事接続しました!";
?>
これを分解してみましょう:
- 新しいMongoDBクライアントを作成し、MongoDBサーバーの場所を指定します(この場合、ローカルマシン上です)。
- 「myAwesomeDB」というデータベースを選択します。もしそれが存在しない場合、MongoDBが自動で作成してくれます。素晴らしいですね?
プロ tip: 接続が成功したかどうかを常に確認してください。実際の世界では、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() . " のドキュメントを追加しました";
?>
以下のように行います:
- ドキュメントを表す配列を作成します。これには、猫に関する様々なフィールドがあります。
-
insertOne()
メソッドを使用して、このドキュメントをコレクションに追加します。 - MongoDBは各ドキュメントにユニークなIDを割り当て、
getInsertedId()
でそれを取得できます。
全てのドキュメントの取得
データがあるので、それを取り出してみましょう。find()
メソッドを使用してコレクション内の全てのドキュメントを取得します:
<?php
$cursor = $collection->find();
foreach ($cursor as $document) {
echo "Name: " . $document["name"] . ", Age: " . $document["age"] . "\n";
}
?>
このコードは、コレクション内の全ての猫の名前と年齢を出力します。find()
メソッドはカーソルを返し、それを繰り返すことで各ドキュメントにアクセスできます。
ドキュメントの更新
ああ、Whiskersは誕生日を迎えたことを気づきました。彼の年齢を更新してみましょう:
<?php
$updateResult = $collection->updateOne(
["name" => "Whiskers"],
['$set' => ["age" => 4]]
);
echo "一致 " . $updateResult->getMatchedCount() . " ドキュメント\n";
echo "変更 " . $updateResult->getModifiedCount() . " ドキュメント";
?>
以下のように行います:
-
updateOne()
を使用して、「Whiskers」という名前のドキュメントを見つけます。 -
$set
オペレータを使用して年齢を4に変更します。 - メソッドは、一致したドキュメントの数と変更されたドキュメントの数を返します。
ドキュメントの削除
時にはデータを削除する必要があります。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() |
単一のドキュメントを削除 |
以上で、MongoDBを使用してPHPで働く基本を学びました。練習は完璧を生みますので、これらのメソッドを試してみてください。異なるコレクションを作成し、様々な種類のドキュメントを挿入し、より複雑なクエリを試してみましょう。
私が多年間教えてきた経験から、コードに手を付けて実験する生徒が、本当にこれらの概念を理解するものだと思っています。それでは、若いパダワン、データベースとともに進む道を進んでいきましょう!??
Credits: Image by storyset