Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan PHP dan MongoDB untuk melaksanakan pangkalan data NoSQL untuk memenuhi keperluan pengguna yang berbeza

Gunakan PHP dan MongoDB untuk melaksanakan pangkalan data NoSQL untuk memenuhi keperluan pengguna yang berbeza

WBOY
WBOYasal
2023-06-26 23:39:161626semak imbas

Pangkalan data NoSQL (Bukan Sahaja SQL) ialah sejenis pangkalan data yang telah berkembang pesat dalam beberapa tahun kebelakangan ini Berbanding dengan pangkalan data hubungan tradisional, ia mempunyai kebolehskalaan dan prestasi yang lebih baik, serta menyokong lebih banyak jenis data dan kaedah penyimpanan data. Antaranya, MongoDB ialah pangkalan data NoSQL yang menggunakan model pangkalan data dokumen dan digunakan secara meluas dalam aplikasi web, aplikasi mudah alih, peranti Internet of Things dan bidang lain.

Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis operasi asas pangkalan data MongoDB, dan menunjukkan cara memenuhi keperluan pengguna yang berbeza melalui contoh.

1. Operasi asas pangkalan data MongoDB

Pangkalan data MongoDB menggunakan model data dokumen, dan unit data asasnya ialah dokumen (dokumen), yang serupa dengan baris (baris) dalam pangkalan data hubungan. Setiap dokumen boleh mengandungi jenis data yang berbeza, seperti rentetan, integer, boolean, tatasusunan, tarikh, dsb. Dokumen diwakili dalam format JSON dan disimpan dalam koleksi MongoDB.

1. Sambung ke pangkalan data MongoDB

Sebelum menggunakan MongoDB, anda perlu memasang sambungan pemacu MongoDB. Ini boleh dicapai dengan menetapkan fungsi dl() dalam PHP, atau anda boleh memuat turun terus sambungan MongoDB dan memasangnya secara manual.

Kod untuk menyambung ke pangkalan data MongoDB adalah seperti berikut:

<?php
$mongo_server = "mongodb://localhost:27017";
$mongo_connection = new MongoClient($mongo_server);
?>

Antaranya, $mongo_server ialah rentetan sambungan pangkalan data MongoDB, dan $mongo_connection ialah objek sambungan MongoDB.

2. Pilih pangkalan data dan koleksi

Sebelum menggunakan MongoDB, anda perlu memilih pangkalan data dan koleksi yang anda mahu kendalikan. Kod untuk memilih pangkalan data adalah seperti berikut:

<?php
$mongo_db = $mongo_connection->selectDB("mydb");
?>

Antaranya, $mongo_db ialah objek pangkalan data yang dipilih, dan mydb ialah nama pangkalan data.

Kod untuk memilih koleksi adalah seperti berikut:

<?php
$mongo_collection = $mongo_db->selectCollection("mycollection");
?>

Antaranya, $mongo_collection ialah objek koleksi yang dipilih, dan mycollection ialah nama koleksi. Jika koleksi tidak wujud, ia akan dibuat secara automatik.

3. Masukkan dokumen

Kod untuk memasukkan dokumen menggunakan MongoDB adalah seperti berikut:

<?php
$document = array(
   "title" => "MongoDB Tutorial",
   "description" => "This is a tutorial for MongoDB database",
   "by_user" => "John Doe",
   "url" => "http://www.mongodb.com",
   "tags" => array("mongodb", "database", "NoSQL"),
   "likes" => 100
);

$mongo_collection->insert($document);
?>

Antaranya, $document ialah dokumen yang akan disisipkan, yang boleh mengandungi pelbagai medan dan nilai.

4. Dokumen pertanyaan

Kod untuk pertanyaan dokumen menggunakan MongoDB adalah seperti berikut:

<?php
$criteria = array("likes" => array('$gt' => 50));
$cursor = $mongo_collection->find($criteria);
foreach($cursor as $document)
{
   echo $document["title"] . " - " . $document["url"] . "<br/>";
}
?>

Antaranya, $kriteria ialah syarat penapisan dan $kursor ialah set hasil pertanyaan yang dikembalikan. Untuk melintasi set hasil, anda boleh menggunakan gelung foreach.

5. Kemas kini dokumen

Kod untuk mengemas kini dokumen menggunakan MongoDB adalah seperti berikut:

<?php
$criteria = array("title" => "MongoDB Tutorial");
$newdata = array('$set' => array("description" => "This is an updated tutorial"));
$mongo_collection->update($criteria, $newdata, array("multiple" => true));
?>

Antaranya, $kriteria ialah syarat penapisan dokumen yang akan dikemas kini, $newdata ialah medan dan nilai yang akan dikemas kini, dan parameter ketiga menunjukkan sama ada untuk mengemas kini berbilang dokumen.

6. Padam dokumen

Kod untuk memadam dokumen menggunakan MongoDB adalah seperti berikut:

<?php
$criteria = array("likes" => array('$lt' => 50));
$mongo_collection->remove($criteria);
?>

Antaranya, $kriteria ialah syarat penapisan dokumen yang hendak dipadam.

2. Contoh Demonstrasi

Berdasarkan operasi asas di atas, kami dapat merealisasikan keperluan pengguna yang berbeza.

1. Keperluan pengguna biasa

Andaikan ada sistem pengurusan maklumat buku yang perlu melaksanakan fungsi berikut:

(1) Tambah maklumat buku

(2) Maklumat buku pertanyaan

(3) Kemas kini maklumat buku

(4 )Padam maklumat buku

Pengguna sistem ini adalah pengguna biasa dan tidak memerlukan log masuk pengguna dan kawalan kebenaran. Kod untuk menggunakan MongoDB untuk mencapai keperluan di atas adalah seperti berikut:

<?php
$mongo_server = "mongodb://localhost:27017";
$mongo_connection = new MongoClient($mongo_server);
$mongo_db = $mongo_connection->selectDB("mydb");
$mongo_collection = $mongo_db->selectCollection("books");

//添加图书信息
$document = array(
   "title" => "PHP and MongoDB Web Development",
   "author" => "Jason",
   "publisher" => "O'Reilly Media",
   "ISBN" => "978-1491903037",
   "price" => 39.98,
   "pages" => 272
);
$mongo_collection->insert($document);

//查询图书信息
$criteria = array("price" => array('$lt' => 50));
$cursor = $mongo_collection->find($criteria);
foreach($cursor as $document)
{
   echo $document["title"] . " - " . $document["author"] . "<br/>";
}

//更新图书信息
$criteria = array("title" => "PHP and MongoDB Web Development");
$newdata = array('$set' => array("price" => 45.99));
$mongo_collection->update($criteria, $newdata, array("multiple" => true));

//删除图书信息
$criteria = array("ISBN" => "978-1491903037");
$mongo_collection->remove($criteria);
?>

2 Keperluan pentadbir

Andaikan terdapat sistem pengurusan blog yang perlu melaksanakan fungsi berikut:

(1) Tambah blog

(2) Senarai blog pertanyaan

(3 ) Edit blog

(4) Padam blog

Pengguna sistem ini dibahagikan kepada pengguna biasa dan pentadbir perlu log masuk dan melakukan kawalan kebenaran. Kod untuk melaksanakan fungsi di atas menggunakan PHP dan MongoDB adalah seperti berikut:

<?php
$mongo_server = "mongodb://localhost:27017";
$mongo_connection = new MongoClient($mongo_server);
$mongo_db = $mongo_connection->selectDB("mydb");

//登录验证
$username = "admin";
$password = "admin";
$users_collection = $mongo_db->selectCollection("users");
$criteria = array("username" => $username, "password" => md5($password));
$user = $users_collection->findOne($criteria);
if(empty($user) || $user["role"] != "admin")
{
   echo "Access denied!";
   exit;
}

//选择博客集合
$blogs_collection = $mongo_db->selectCollection("blogs");

//添加博客
$blog = array(
   "title" => "MongoDB Tutorial",
   "content" => "This is a tutorial for MongoDB database"
);
$blogs_collection->insert($blog);

//查询博客列表
$cursor = $blogs_collection->find();
foreach($cursor as $blog)
{
   echo $blog["title"] . " - " . $blog["content"] . "<br/>";
}

//编辑博客
$criteria = array("title" => "MongoDB Tutorial");
$newdata = array('$set' => array("content" => "This is an updated tutorial"));
$blogs_collection->update($criteria, $newdata, array("multiple" => true));

//删除博客
$criteria = array("title" => "MongoDB Tutorial");
$blogs_collection->remove($criteria);
?>

Antaranya, $username dan $password ialah nama pengguna dan kata laluan pentadbir, $users_collection ialah objek koleksi pengguna, dan $role ialah peranan pengguna.

3 Ringkasan

Artikel ini memperkenalkan secara terperinci operasi asas melaksanakan pangkalan data NoSQL menggunakan PHP dan MongoDB, dan menunjukkan cara memenuhi keperluan pengguna yang berbeza melalui contoh. Gabungan PHP dan MongoDB boleh menyediakan penyelesaian penyimpanan data yang cekap dan berskala untuk bidang pembangunan seperti aplikasi web, aplikasi mudah alih dan peranti Internet of Things.

Atas ialah kandungan terperinci Gunakan PHP dan MongoDB untuk melaksanakan pangkalan data NoSQL untuk memenuhi keperluan pengguna yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn