資料庫-nosql-mongodb客戶端操作
阿新 • • 發佈:2021-02-13
技術標籤:資料庫
PHP客戶端操作
Linux上安裝 MongoDB PHP擴充套件
1、準備apache和php環境
[[email protected]]#yum install httpd php php-pear php-devel -y
2、安裝MongoDB 的 PHP 擴充套件驅動
[[email protected]]# yum install gcc gcc-c++ make -y
安裝依賴包:
[[email protected]]# yum install openssl-devel -y
安裝擴充套件:
[[email protected] ]# pecl install mongo
修改php.ini檔案,在php.ini檔案中新增mongo配置,配置如下:extension=mongo.so
[[email protected] ~]# vim /etc/php.ini
3、重啟服務
[[email protected] ~]# systemctl stop firewalld.service
[[email protected] ~]# systemctl start httpd
4、建立一個集合
[[email protected] ~]# vim /var/www/html/set.php
<?php
$m = new MongoClient();
$db = $m->test;
$collection = $db->createCollection("student");
echo "集合建立成功";
?>
5、插入文件
[[email protected] ~]# vim /var/www/html/insert.php
<?php
$m = new MongoClient(); // 連線到mongodb
$db = $m->test; // 選擇一個數據庫
$collection = $db->student; // 選擇集合
$document = array( "id" => 201, "name" => "張三", "sex" => "男", "age" => 20 );
$collection->insert($document);
echo "資料插入成功";
?>
6、查詢文件
[[email protected] ~]# vim /var/www/html/find.php
<?php
$m = new MongoClient(); // 連線到mongodb
$db = $m->test; // 選擇一個數據庫
$collection = $db->student; // 選擇集合
$cursor = $collection->find(); // 迭代顯示文件標題
foreach ($cursor as $document)
{ echo $document["name"] . "\n"; }
?>
7、更新文件
[[email protected] ~]# vim /var/www/html/update.php
<?php
$m = new MongoClient(); // 連線到mongodb
$db = $m->test; // 選擇一個數據庫
$collection = $db->student; // 選擇集合
// 更新文件
$collection->update(array("name"=>"張三"), array('$set'=>array("name"=>"李四")));
// 顯示更新後的文件
$cursor = $collection->find();
// 迴圈顯示文件標題
foreach ($cursor as $document) {
echo $document["name"] . "\n";
}
?>
8、刪除文件
[[email protected] ~]# vim /var/www/html/remove.php
<?php
$m = new MongoClient(); // 連線到mongodb
$db = $m->test; // 選擇一個數據庫
$collection = $db->student; // 選擇集合
// 移除文件
$collection->remove(array("name"=>"李四"), array("justOne" => true));
// 顯示可用文件資料
$cursor = $collection->find();
foreach ($cursor as $document) {
echo $document["name"] . "\n";
}
?>
mongodb執行js指令碼
MongoDB有一個很大的優勢—它使用js管理資料庫,所以也能夠使用js指令碼進行復雜的管理。
mongodb 的shell是javascript實現的,如果直接使用js實現相應的功能則顯得很直觀和簡便。
使用js指令碼進行互動的優點與缺點
(1)無需任何驅動或語言支援;
(2)方便cron或管理員定時任務;
(3)注意點:任然是資料格式的問題;
js指令碼一般會用來執行以下任務
(1)備份;
(2)排程map-reduce命令;
(3)離線報告,離線任務;
(4)管理員定時任務;
mongodb shell 執行js指令碼的四種方式
1> 互動式 mongo shell
[[email protected] ~]# mongo
MongoDB Enterprise > use school
switched to db school
MongoDB Enterprise > db.student.find()
{ "_id" : ObjectId("601a4f56ae5aaf64dfbc6a0f"), "id" : 101, "name" : "xuexi", "age" : 23 }
2> mongo --eval 執行一段指令碼,不進入互動模式,直接在 OS 的命令列下執行一段mongodb指令碼。
[[email protected] ~]# mongo school --eval "printjson(db.student.findOne())"
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017/school
MongoDB server version: 3.4.7
{
"_id" : ObjectId("601a4f56ae5aaf64dfbc6a0f"),
"id" : 101,
"name" : "xuexi",
"age" : 23
}
3> 在OS命令列下,執行一個js檔案
[[email protected] ~]# echo "printjson(db.student.findOne())" > print.js
[[email protected] ~]# mongo school print.js
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017/school
MongoDB server version: 3.4.7
{
"_id" : ObjectId("601a4f56ae5aaf64dfbc6a0f"),
"id" : 101,
"name" : "xuexi",
"age" : 23
}
4> 在mongo shell 互動模式下,執行一個js檔案
[[email protected] ~]# mongo school
MongoDB Enterprise > load('/root/print.js')
{
"_id" : ObjectId("601a4f56ae5aaf64dfbc6a0f"),
"id" : 101,
"name" : "xuexi",
"age" : 23
}
true