1. 程式人生 > >php 操作mongodb——增刪改查

php 操作mongodb——增刪改查

conn.php
<?php
$conn = new Mongo("mongodb://user1:[email protected]:27017/test"); //使用者授權連結mongodb test資料庫
$db = $conn->test;
?>

find.php
<?php
include "conn.php";
$c1 = $db->c1; //操作c1集合

//由於php裡面不能直接用json
//db.c1.find({name:"user1"}); 不能這麼玩
//{name:"user1"} == array("name"=>"user1") 用這種形式
//[1,2] == array(1,2);

//{} == array()

$arr=array();
$rst = $c1->find($arr);
foreach($rst as $val){
echo "<pre>";
print_r($val['name']); //取id的話 得"_id"
}

例子2:指定值查詢
$arr = array("name"=>"user1"); //查詢nam=user1的
$rst = $c1->find($arr);
foreach($rst as $val){
echo "<pre>";
$fis = $val['_id'];
print_r($val);
echo "<a href='user.php?fid={$fid}'></a>"; //你會發現fid傳到user.php的時候變成字串了,怎麼解決?

//user.php 根據_id查mongodb對應的資料
<?php
include "conn.php";
$c1 = $db->c1;
$oid= new MongoId($_GET['fid']); 用這個轉一下
var_dump($oid); //還是Object,不轉的話就是string型別

$arr = array("_id"=>"$oid");
$rst = $c1->find($arr);
foreach($rst as $val){
echo "<pre>";
print_r($val);
}
?>
}

例子3:增加
include "conn.php";
$c1 = $db->c1;

//db.c1.insert({"name"=>"user3",age:30,"sex"=>"nan"});
$arr = array("name"=>"user3","age"=>30,"sex"=>"nan");
if($c1->insert($arr))
echo '成功';
else
echo '失敗';

例子4:刪
include "conn.php";
$c1 = $db->c1;
//db.c1.remove({"name"=>"user2"});
$arr = array("name"=>"user2");
if($c1->remove($arr))
echo '刪除成功';
else
echo '刪除失敗';

例子4:改
include "conn.php";
$c1 = $db->c1;
//db.c1.update({"name"=>"user2"},{$set:{age:20,sex:"nan"}}); 增加欄位
$sarr = array("name"=>"user2");
$darr = array('$set'=>array('sex'=>'nan','age'=>24));
$opts = array('upsert'=>0,'multiple'=>1);
if($c1->update($sarr,$darr,$opts)) //php裡面的update只能傳3個引數
echo '更改成功';
else
echo '更改失敗';

//關閉
$conn->close();

?>

《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《

為了確保正確連線,你需要指定資料庫名,如果資料庫在mongoDB中不存在,mongoDB會自動建立

程式碼片段如下:

<?php$m = new MongoClient(); // 連線預設主機和埠為:mongodb://localhost:27017$db = $m->test; // 獲取名稱為 "test" 的資料庫//如果要指定主機與埠$m = new MongoClient('mongodb://192.168.2.85:12345'); // 連線預設主機和埠為:mongodb://localhost:27017$db = $m->test; // 獲取名稱為 "test" 的資料庫?>

建立集合

建立集合的程式碼片段如下:

<?php$m = new MongoClient(); // 連線$db = $m->dbnamee; // 獲取名稱為 "dbname" 的資料庫$collection = $db->createCollection("table");
echo"集合建立成功";
?>

插入文件

在mongoDB中使用 insert() 方法插入文件:

插入文件程式碼片段如下:

<?php$m = new MongoClient();    // 連線到mongodb$db = $m->test;            // 選擇一個數據庫$collection = $db->runoob; // 選擇集合$document = array( 
	"title" => "MongoDB", 
	"description" => "database", 
	"likes" => 100,
	"url" => "http://www.runoob.com/mongodb/",
	"by", "菜鳥教程"
);
$collection->insert($document);
echo"資料插入成功";
?>

查詢文件

$cursor=$collection->find();
/ 迴圈顯示文件標題
foreach ($cursor as $document) {
	echo $document["title"] . "\n";
}

更新文件

1.更新匹配的第一條資料

$collection->update(array("title"=>"MongoDB"), array('$set'=>array("title"=>"MongoDB 教程")));
2.如果更新不存在的資料,要新建,請使用第三個引數['upsert'=>true]
$collection->update(['x'=>3],['$set'=>['kk'=>'34ere']],['upsert'=>true]);
3.如果要更新匹配的所有資料,請使用第三個引數['multiple'=>true]
$collection->update(['x'=>3],['$set'=>['kk'=>'34ere3']],['multiple'=>true]);

刪除文件

// 移除文件
$collection->remove(array("title"=>"MongoDB 教程"), array("justOne" => true));

關閉連線

<?php$m->close();