php连接MongoDB数据库,对数据库的增删改查

一、连接数据库(在完成对MongoDB的扩展的前提下)

连接本地的mongodb,端口默认27017,

<?php
    
    //连接Mongodb
    $manager = new      MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");
    
    echo "connect success!!!";    
?>

二、插入数据

<?php
    
    //连接Mongodb
    $manager = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");
    
    echo "connect success!!!";
    
    //创建变量,进行插入操作
    $bulk = new MongoDB\Driver\BulkWrite;
    
    //插入的数据(插入一条或多条)
    $bulk->insert(["name"=>"zhangsan","age"=>25,"class"=>"jisuanjierban"]);
    $bulk->insert(["name"=>"lisi","age"=>25,"class"=>"jisuanjisiban"]);
    
    //插入数据到useinfo数据库下的student表
    $manager->executeBulkWrite("useinfo.student",$bulk);
    
    echo "insert success!!!";
?>

三、查询数据

<?php
 
    //连接Mongodb
    $manager = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");
    
    echo "connect success!!!".PHP_EOL;
    
    //过滤条件
    $filter  = ['age' => ['$gt' => 20]];
    
    //可选项
    $option = [
        
        'projection' => ["_id" =>0],  //不显示_id,此字段用于指定显示或不显示某些字段
        
        'sort' => ['name' => -1],     //按照某些字段排序 ,-1倒叙,1正序
        
        'limit'=>$pageSize,  //取多少条数据
        
        'skip' => ($num-1)*$pageSize  //取第几页数据
    ];
    
    //查询数据
    $query = new MongoDB\Driver\Query($filter, $option);
    
    //查询结果,返回数组
    $cursor = $manager->executeQuery('useinfo.student',$query);
    
    //循环遍历
    foreach ($cursor as $document){
    
        print_r($document);
    }
    
    echo "over";
    
?>

四、更新数据

<?php 
    //连接Mongodb
    $manager = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");
    
    echo "connect success!!!"
    
    $bulk->new MongoDB\Driver\BulkWrite;
    $bulk->update(
        ["name" => "zhangsan"],
        ["$set" => ["name" => "kenan","class" => "softeneregy"]],
        ["multi" => false, "upsert" => false],  //multi为true,代表更新找到的所有记录,false默认更新找到的第一条
                                                //upsert为true代表如果没有此条记录就执行插入操作,默认false不插入
    );
    
    $result = $manager->executeBulkWrite('test.sites', $bulk);
?>

五、对以上方法进行简单的封装

<?php 
    class MongoDBClient{
        
        protected $manager;  //连接数据库
        
        protected $dbname;   //操作的数据库
        
        protected $collection;  //操作的数据库下的表
        
        protected $bulk;        // 插入和更新操作
        
        protected $writeConcern;  //连接超时
        
        
        //定义构造函数
        public function __construct($config){
            $this->manager = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017");  //连接数据库
             
            $this->dbname = $config["dbname"];   //初始化数据库
            
            $this->collection = $config["collection"];  //初始化集合
            
            $this->bulk = $new MongoDB\Driver\BulkWrite;  //插入、更新操纵
        
            $this->writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY,100); //连接超时

        }
        
        //查询方法
        public function query($filter=[],$option=[]){
            //创建查询对象
            $query = new MongoDB\Driver\Query($filter,$option)
            
            //查询结果,返回数组
            $cursor = $manager->executeQuery("$this->dbname.$this->collection",$uery);
            
            //循环遍历
            foreach($cursor as $document){
            
                print_r($document);
            }
        
        }
        
        //插入数据
        public function insert($data=[]){
            
            //插入一条或多条数据 $bulk->insert(["name"=>"zhangsan","age"=>25,"class"=>"jisuanjierban"]);
            $this->bulk->insert($data);
            
            //插入数据到指定的数据库下的表
            $this->manager->executeQuery("$this->dbname.$this->collection",$this->bulk);
            
        
        }
        
        //更新数据
        public function update($filter=[],$update=[],$upsert=false){
            
            $this->bulk->update([
                $filter,
                ["$set" => $update],
                ["multi" => true,"upsert"=>$upsert],
            ]);
            $result = $this->manager-executeBulkWrite("$this->dbname.$this->collection",$this-bulk);
            
            
        }
        
        //删除数据
        public function delete($filter=[],$limit=0){
        
            $this-bulk-delete(
                $filter,
                ['limit' => $limit]
            );
            $result = $this->manager->exeucuteBulkWrite("$this->dbname.$this-colletion",$this-bulk);
        
        }
        
        
    }
    
    //获取要操作的数据库
    $dbname = $_GET['dbname'];
    
    //要操作的表(集合)
    $collection = $_GET['colection'];
    
    //创建当前类的对象
    $obj1 = new MongoDBClient(["dbname"=>$dbname,"collection"=>$collection]);
    
    //从表单获取当前操作类型(增、删、改、查)
    $action = $_GET['action'];
    
    //插入数据
    if($action == "insert"){
        $data = $_GET["data"];
        $obj1->insert($data);
        
    //查询数据
    }else if($action == "query"){
        $filter = $_GET["filter"];
        $option = $_GET["option"];
        $obj->query($filter,$option);
    }
    
    //更新数据
    else if($action == "update"){
        $filter = $_GET["filter"];
        $update = $_GET["date"];
        $obj1->update($filter,$update);
    }
    
    //删除数据
    else if($action == "delete"){
        $filter = $_GET("filter");
        $obj1->delete($filter);
    }
?>

 

posted @ 2019-09-12 14:05  神神气气  阅读(1619)  评论(0编辑  收藏  举报