//MongoDB的配置
$MONGO_SERVER = array(
'host'=>'127.0.0.1',
'port'=>27017,
'dbname'=>'app',
'user'=>'',
'pwd'=>''
);
//主機端口
$host_port = $MONGO_SERVER['host'] . ":" . $MONGO_SERVER['port'];
//實例化Mongo
$mongo = new MongoClient($host_port);
//選擇數據庫
$db = $mongo->selectDB($MONGO_SERVER['dbname']);
//在當前數據庫創建一個集合
$table = $db->createCollection("member");
//選擇一個集合
$collection = $db->member;
//插入的數據
$list = array(
array(
"name" => "XiaoMing",
"email" => "[email protected]",
"age" => 24,
"city" => "BeiJing",
"work" => "PHP"
),
array(
"name" => "Tom",
"email" => "[email protected]",
"age" => 25,
"city" => "BeiJing",
"work" => "Android"
),
array(
"name" => "Ye",
"email" => "[email protected]",
"age" => 21,
"city" => "JiNan",
"work" => "Android"
)
);
//插入數據庫
foreach($list as $info){
$collection->insert($info);
}
//獲取全部數據
$data = $collection->find();
//循環數據顯示
foreach ($data as $document) {
var_dump($document);
}
//刪除文檔
$collection->remove(array("name"=>"wang","age"=>24), array("justOne" => true));
//更新文檔
$collection->update(array("name"=>"Jiang"), array('$set'=>array("age"=>21)));
//更新
$where = array("money"=> 94);
$param = array('$set'=>array('money'=>100));
$opt = array('upsert'=>0,'multiple'=>1);
$res = $collection->update($where,$param,$opt);
// 顯示更新後的文檔
$cursor = $collection->find();
//查詢所有的數量
$cursor = $collection->find()->count();
//查詢age=24的數量
$cursor = $collection->find(array('age'=>24))->count();
//查詢age<24的數量
$cursor = $collection->find(array('age'=>array('$lt'=>24)))->count();
//查詢age<=24的數量
$cursor = $collection->find(array('age'=>array('$lte'=>24)))->count();
//查詢age>24的數量
$cursor = $collection->find(array('age'=>array('$gt'=>24)))->count();
//查詢age>=24的數量
$cursor = $collection->find(array('age'=>array('$gte'=>24)))->count();
//查詢age!=24的數量
$cursor = $collection->find(array('age'=>array('$ne'=>24)))->count();
//查詢age>22並且小於25的數量
$cursor = $collection->find(array('age'=>array('$gt'=>22,'$lt'=>25)))->count();
//查詢age>=22並且age<=25的數量
$cursor = $collection->find(array('age'=>array('$gte'=>22,'$lte'=>25)))->count();
//查詢age=24並且email爲[email protected]的數量
$cursor = $collection->find(array('age'=>24,'email'=>'[email protected]'))->count();
//查詢age=24並且email爲[email protected]的數據
$cursor = $collection->find(array('age'=>24,'email'=>'[email protected]'));
//查詢age=24的兩條記錄
$cursor = $collection->find(array('age'=>24))->limit(5);
//skip()方法來跳過指定數量的數據
$cursor = $collection->find(array('age'=>24))->limit(5)->skip(4);
//sort()方法對數據進行排序,1爲升序,-1降序
$cursor = $collection->find()->sort(array('age'=>-1,'name'=>1));
//查詢age=24的,只顯示name和email
$cursor = $collection->find(array('age'=>24))->fields(array('name'=>1,'email'=>1));
//查詢age=24的,不顯示work
$cursor = $collection->find(array('age'=>24))->fields(array('work'=>0));
//模糊like查詢
$param = array("name" => new MongoRegex('/^W/'));
$cursor = $collection->find($param);
$param = array("name" => new MongoRegex('/ang$/'));
$cursor = $collection->find($param);
$param = array("name" => new MongoRegex('/iang/'));
$cursor = $collection->find($param);
//$or
$param = array('$or'=>array(array("name"=>"Jiang"),array("name"=>"Qiang")));
$cursor = $collection->find($param)->fields(array('name'=>1,'email'=>1));
//$in和$nin
$param = array("age" => array('$in'=>array(21,22,23)));
$cursor = $collection->find($param)->fields(array('name'=>1,'email'=>1));
$param = array("age" => array('$nin'=>array(21,22,23)));
$cursor = $collection->find($param)->fields(array('name'=>1,'email'=>1));
//MongoDB中聚合的方法使用aggregate()都相當於mysql中的group by
// db.user.aggregate([{$group:{_id:"$user",numCount:{avg:1}}}])
// $sum---計算總和
// db.user.aggregate([{$group:{_id:"$user",numCount:{$sum:"$likes"}}}])
// $avg---計算平均值
// db.user.aggregate([{$group:{_id:"$user",numCount:{$avg:"$likes"}}}])
// $min---獲取集合中所有文檔對應值得最小值
// db.user.aggregate([{$group:{_id:"$user",numCount:{$min:"$likes"}}}])
// $max---獲取集合中所有文檔對應值得最大值
// db.user.aggregate([{$group:{_id:"$user",numCount:{$max:"$likes"}}}])
$option = array(
//匹配條件
array(
'$match'=>array(
'likes'=>array(
'$gt'=>80,
'$lt'=>110
)
)
),
//統計條件
array(
'$group'=>array(
'_id'=>'$user',
'numcount'=>array(
'$sum'=>'$likes'
)
)
)
);
//獲取全部數據
$data = $collection->aggregate($option);
//循環數據顯示
$info = array();
foreach ($data as $document) {
$info[] = $document;
}
//分頁代碼
//設置分頁數
$page = isset($_GET['page']) ? max(1,(int)$_GET['page']) : 1;
//設置每頁的數量
$pagesize = 3;
//獲取總的數據量
$count = $collection->find()->count();
//計算總頁數
$totalPage = ceil($count/$pagesize);
if($page>$totalPage){
$page = $totalPage;
}
//開始設置分頁的skip
$skip = ($page-1) * $pagesize;
//構造分頁字符串
$pageStr = "";
for($i = 1; $i <= $totalPage; $i++){
if($i == $page){
$pageStr .= ' <strong>'.$i.'</strong>';
}else{
$pageStr .= "<a href='?page=$i'>".$i."</a>";
}
}
//獲取數據
$allData = $collection->find()->skip($skip)->limit($pagesize);
$data = array();
foreach($allData as $info){
$data[] = $info;
}
PHP操作MongoDB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.