$m = new M('user');

#获取数据库列表
$m->listDBs();

#获取数据库中所有的集
$m->list_Collections();

#获取当前集信息
$m->collection_Data();

#添加数据
$m->insert(['username'=>'降省心']);

#删除集中的数据
$m->remove_collection(['username'=>'降省心']);

#查询一条数据条件 username='降省心'
$m->find_One(['username'=>'降省心']);

#查询多条数据
$m->find_All();

#修改 把集中数据 username='小小啊' 改成 username='小'
$reg = $m->update_collection(['username'=>'小小啊'],['username'=>'小']);

-------------------------------------------------下面开始是 操作类-----------------------------------------------------------

<?php
header("content-type:text/html;charset=utf-8");


class M extends MongoClient
{
    //数据库地址
    public $db_host = '127.0.0.1';
    //数据库端口
    public $db_port = '27017';
    //数据库
    public $db_name = 'live';
    //集合
    public $collection_name;

    /*
     * 链接数据库
     *
     * */
    public function __construct($collection_name = false)
    {
        if($collection_name)
        {
            parent::__construct("mongodb://{$this->db_host}:{$this->db_port}");
            //获取数据库文档集
            $this->collection_name = $this->{$this->db_name}->selectCollection($collection_name);
        }else
        {
            return false;
        }
    }

    //获取数据库列表
    public function list_DBs()
    {
        return $this->listDBs();
    }

    //取得一个数据库
    public function get()
    {
        return $this->__get($this->db_name);
    }

    //获取集合列表
    public function list_Collections()
    {
        return $this->live->listCollections();
    }

    //获取当前集信息
    public function collection_Data()
    {
        return [
            'collection_count'=>$this->collection_name->count(),
            'collection_name'=>$this->collection_name->getName()
        ];
    }

    /*
     * 获取数据库连接
     * */
    public function select_DB()
    {
        return $this->selectDB($this->db_name);
    }

    /*
     * 查询单条数据
     * 参数
     * $where['字段名'=>'条件'] 可选
     * $field['字段'] 可选
     * 返回 array
     * */
    public function find_One($where = [],$field = [])
    {
        return $this->collection_name->findOne($where,$field);
    }

    /*
     * 查询多条数据
     * 参数 $where['字段名'=>'条件']
     * 返回 array
     * */
    public function find_All($where = [],$field = [])
    {
        $M_reg = $this->collection_name->find($where,$field);
        if($M_reg)
        {
            $M_regNew = [];
            foreach ($M_reg as $k=>$v)
            {
                $M_regNew[$k] = $v;
            }
            return $M_regNew;
        }else
        {
            return null;
        }
    }

    /*
     * 插入数据
     * */
    public function insert($val = [])
    {
        return $this->collection_name->insert($val);
    }

    /*
     * 删除集中的数据
     * $where = ['字段'=>'条件']
     * */
    public function remove_collection($where = [])
    {
        return $this->collection_name->remove($where);
    }

    /*
     * 删除整个集
     * */
    public function drop_collection()
    {
        return $this->collection_name->drop();
    }

    /*
     * 修改集中的数据
     * $where = ['字段'=>'值']
     * $val = ['字段'=>'值']
     * */
    public function update_collection($where = [],$val = [])
    {
        return $this->collection_name->update($where,$val);
    }
}


/*mongon参数说明
----------------------------------------------------函数1----------------------------------------
插入数据函数 insert
$mongo->$db_name->$collection_name->insert($input.$options)
-----------------------------------------------------------
$option中的参数以及默认值
$option=array(
    'fsync'=> false,
    'j'   => false,
    'w'    => 1,
    'wtimeout'=>10000,
    'timeout'=>10000
)

'fsync'
这个参数设置为真时,php将会告诉mongodb将当前写入数据直接写入硬盘,即使还没有全部从php文档写入mongodb数据库
'j'
这个参数设置为真市,php将会告诉mongodb在数据插入成功之前就将本次修改写入日志
'w'
如果设置成0,写操作将不会被确认,在这里还不会深究
'wtimeout'
跟上面的'w'绑定使用的,后面会介绍的
'timeout'
客户端等待服务器响应的超时时间,也就是如果php的服务器等待mongodb数据库写入数据的时间,如果超过了timeout规定的时间,就算本次写入失败
---------------------------------------------------函数2----------------------------------------
筛选数据函数 find
$mongo->$db_name->$collection_name->find($situation,$field)
-----------------------------------------------------------
$situation可以为空,表示返回全部数据,也可以是一个数组,表示筛选条件,就跟mongodb命令一样
$field也可以为空,表示返回全部字段,也可以跟第一个参数一样,传入数组,规定返回的字段
注意,即使上面使用$field限制返回字段,_id字段还是会自动返回的
---------------------------------------------------函数3----------------------------------------
更新数据 update
$mongo->$db_name->$collection_name->update($criteria,$update,$option)
---------------------------------------------------------------------
结合shell命令就很好理解了
$criteria 表示筛选进行更新的文档
$update 就是要更新后的数据
$option=array(
    'upsert'=>false,
    'multiple'=>true,
    'fsync'=>false,
    'w'=>1,
    'wtimeout'=>10000,
    'timeout'=>10000
)
后几个的作用在函数1里讲过了就不赘述了,upsert为true表示如果当前文档存在就更新,不存在就创建,multiple为真表示匹配该条件的文档都会被更新,即不止更新满足条件的一个文档。
---------------------------------------------------函数3----------------------------------------
删除数据 remove
$mongo->$db_name->$collection_name->remove($remove,$option)
-----------------------------------------------------------
$remove表示跟find()第一个参数一样的筛选条件
$option=array(
    'justOne'=>false,
    'fsync'=>false,
    'w'=>1,
    'j'=>false,
    'wtimeout'=>10000,
    'timeout'=>10000
)
上面有的我就不赘述了,justOne根据名字来,就一个,如果为true表示就删除一个匹配$remove的文档*/

 

 


/**
 * index_db.php
 *
 * mongodb数据库操作类
 *
 * 2017 Copyright (c) https://note.jsx6.com
 *
 * 修改历史
 * ----------------------------------------
 * 2017/10/13, 作者: 降省心(QQ:1348550820), 操作:创建
 **/

 

---------------------------------------------------------------------------------------------
唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。