PHP之mongodb学习

本文详细介绍了如何使用 PHP 连接 MongoDB 数据库,并通过多种方法进行数据的增删改查操作,包括插入数据、删除数据、更新数据、批量替换数据、数据累加等基本功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




<?php







//连接别的类,用来调用在别的类里定义的参数  
include 'custon.php';
//连接DBHOST这个接口对应的芒果数据库DBHOST对应的数据形式为(接口:端口),其中端口默认为27017。
$con= new MongoClient(DBHOST);
//判断是否连接上
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
//连接项目所用数据库、如果没有,他会自动建立一个名字为fei的数据库
$db=$con->fei;
//连接项目数据库里索要用到的数据表,如果没有这张表,他会自动新建一张
$collection=$db->test;




//增;insert


$data=array("name"=>"大飞哥",'age'=>'33','sex'=>'男');
//$result=$collection->insert($data); #简单插入
//插入后系统会自动生成一个_id
//echo "插入数据的ID是".$data["_id"];


//删;remove


//根据标签参数删除。这个方法会删除在这个数据表里所有带'tel'=>'123456789'这个参数的数据,但_id这个参数不能直接使用
//$collection->remove(array('tel'=>'123456789'));  


//根据_id删除,_id是系统自动生成的ID
//$id = new MongoId('56c433a324a739dc0600006b');  
//$collection->remove(array('_id'=>(object)$id));  
 
//改;update


//增加、修改参数。对已有的的表增加一个标签,也可以直接对已有的参数进行修改
//$newda=array("tel"=>"123456789");  
//$result=$collection->update($data,array('$set'=>$newda)); 


//替换,相当于把上一张表的数据删除了又重新补充了另外的数据
//$newdata=array("user_age"=>"22","tel"=>"123456789");  
//$result=$collection->update($data,$newdata);  


//批量替换;'multiple'=>true
//要动哪组数据必须填写一个它有的数据如;"name"=>"二飞哥"必须是在那个表里有的一个参数,相当于索引  要不他找不到
//$newdata=array("sex"=>"男","money"=>10086);  
//$result=$collection->update($data,array('$set'=>$newdata),array('multiple'=>true));  


//数据自动累加;'$inc'=>array('money'=>-5)
//目前只会对最早的数据起作用。
//$newdata=array('name'=>'大飞哥');  
//$result=$collection->update($data,array('$set'=>$newdata,'$inc'=>array('money'=>-5)));  


 //查;count、find
 //注意,查询完后显示数据的时候必须用foreach循环,不然报错
 
 
 //count;查数据个数
 
//echo 'count:'.$collection->count()."<br>"; #表内全部 数据个数


//echo 'count:'.$collection->count(array('age'=>'11'))."<br>"; #加上条件 ,查询符合条件的数据个数


//$gt为大于、$gte为大于等于、$lt为小于、$lte为小于等于、$ne为不等于、$exists存在
//注意;后面的选择条件的参数要注意数据类型'$gt'=>'20'和'$gt'=>20是两码事
//echo 'count:'.$collection->count(array('age'=>array('$gt'=>'20','$lte'=>'40')))."<br>"; #大于20小于等于40
 
//limit;极限 最多显示多少, skip;跳过忽略第几条数据,count;计数(没弄懂这个是干什么的,但是不写会报错)
//echo 'count:'.$collection->find()->limit(3)->skip(0)->count(true)."<br>"; #获得实际返回的结果数  


//find;查具体数据


//查所有find(),后面可以不写
//$cursor = $collection->find()->snapshot();  
//foreach ($cursor as $id => $value) {  
//    echo "$id: "; 
//    var_dump($value);   
//    echo "<br>";  
//}  


//查一条数据,这条数据是数据表里的第一条数据
//$cursor = $collection->findOne();
//foreach ($cursor as $id => $value) {  
//    echo "$id: "; 
//    var_dump($value);   
//    echo "<br>";  
//}


//排除列  false为不显示  
//$cursor = $collection->find()->fields(array("age"=>false,"tel"=>false));
//foreach ($cursor as $id => $value) {  
//    echo "$id: "; 
//    var_dump($value);   
//    echo "<br>";  
//}


#指定列  true为显示  如果没有这个参数,那就只显示id
//$cursor = $collection->find()->fields(array("name"=>true)); 
//foreach ($cursor as $id => $value) {  
//    echo "$id: "; 
//    var_dump($value);   
//    echo "<br>";  
//}


//根据指定条件查找
//$where=array('name'=>array('$exists'=>true),'age'=>array('$ne'=>'0','$lt'=>'20','$exists'=>true));  
//$cursor = $collection->find($where); 
//foreach ($cursor as $id => $value) {  
//    echo "$id: "; 
//    var_dump($value);   
//    echo "<br>";  
//}


//选择性的排除前多少条数据
//$cursor = $collection->find()->limit(5)->skip(0);  
//foreach ($cursor as $id => $value) {  
//    echo "$id: "; 
//    var_dump($value);   
//    echo "<br>";  
//}  


//排序  ;sort
//$cursor = $collection->find()->sort(array('age'=>1)); #-1表示降序 1表示升序,参数的先后影响排序顺序  
//没弄明白下面这两个方法有什么意义
//$cursor = $collection->ensureIndex(array('age' => 1,'money'=>-1),array('background'=>true)); #索引的创建放在后台运行(默认是同步运行)  
//$cursor = $collection->ensureIndex(array('age' => 1,'money'=>-1),array('unique'=>true)); #该索引是唯一的  
//foreach ($cursor as $id => $value) {  
//    echo "$id: "; 
//    var_dump($value);   
//    echo "<br>";  
//} 


//取得查询结果  
$cursor = $collection->find();  
$array=array();  
foreach ($cursor as $id => $value) {  
    $array[]=$value;  
}  
 var_dump($array);   
  
#关闭连接  
//$con->close(); 



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值