小编复习MongoDB,基础请参考:MongoDB-CSDN博客(主要是linux操作)
PHP操作
 <?php
  /**
  * 注意 本类仅适用于PHP7.0版本以上   
  * 请注意:mongoDB 支持版本 3.2+
  * mongo具体参数参考: https://docs.mongodb.com/manual/reference/command/
  */
 class MyMongodb {
     private $manager;
     private $dbname='yun';
     /**
      * 创建实例
      * @param  string $confkey
      * @return object
      */
     public function __construct($dns){
         $this->manager = new MongoDB\Driver\Manager($dns);
     }
     /**
      * 插入
      */
     public function insert($table,$data){
         $bulk = new MongoDB\Driver\BulkWrite;
         $bulk->insert($data);
         $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
         $res = $this->manager->executeBulkWrite($this->dbname.'.'.$table, $bulk, $writeConcern);
         return $res?true:false;
     }
     public function insert_batch($table,$data)
     {
         $bulk = new MongoDB\Driver\BulkWrite;
         foreach ($data as $val){
             $bulk->insert($val);
         }
         $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
         $res = $this->manager->executeBulkWrite($this->dbname.'.'.$table, $bulk, $writeConcern);
         return $res?true:false;
     }
     /**
      * 查询
      * eg:['age' => 24]]
      * eg;$options = [
      *      'projection' => ['_id' => 0], //不输出_id字段
      *      'sort' => ['leavetime'=>-1] //根据user_id字段排序 1是升序,-1是降序
      *   ];
      */
     public function select($table,$filter,$options=array()){
         !$filter && dieError('param of filter is error');
         $options['projection']=['_id' => 0];
         $query = new MongoDB\Driver\Query($filter, $options); //查询请求
         $cursor = $this->manager->executeQuery($this->dbname.'.'.$table, $query);
         $result = [];
         foreach($cursor as $doc) {
           $result[] = (array)$doc;
         }
         return $result;
     }
     /**
      * 修改
      * eg:$condition=['name' => 'JetWu5']
      * eg:$set_array= ['$set' => ['age' => 30, 'promise' => 'always smile!']]
      */
     public function update($table,$condition=array(),$set_array=array()){
         !$condition && dieError('param of condition is error');
         !$set_array && dieError('param of set_array is error');
         $bulk = new MongoDB\Driver\BulkWrite;
         $bulk->update(
           $condition,
           $set_array
         );
         $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可选,修改确认
         $res = $this->manager->executeBulkWrite($this->dbname.'.'.$table, $bulk, $writeConcern);
         return $res?true:false;
     }
     /**
      * 删除
      * eg:$condition=['name' => 'JetWu5']
      * if $condition==[] then delete all table documents!
      */
     public function delete($table,$condition=[]){
         !is_array($condition) && dieError('param of condition is error');
         $bulk = new MongoDB\Driver\BulkWrite;
         $bulk->delete($condition);
         $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可选,修改确认
         $res = $this->manager->executeBulkWrite($this->dbname.'.'.$table, $bulk, $writeConcern);
         return $res?true:false;
     }
     function exec($opts) {
         $cmd = new MongoDB\Driver\Command($opts);
         $cursor =  $this->manager->executeCommand($this->dbname, $cmd);
         $result = [];
         foreach($cursor as $doc) {
           $result[] = (array)$doc;
         }
         return $result;
     }
 }
关键字
 $eq:等于
 $gt:大于
 $gte:大于等于
 $lt:小于
 $lte:小于等于
 $ne:不等于
 $in:在指定数组中
 $nin:不在指定数组中
 $and:逻辑与
 $or:逻辑或
 $not:逻辑非
 $exists:字段是否存在
//数据库链接
 $mongodb = new MongoDB\Driver\Manager('mongodb://localhost:27017');
 //数据写入
 $bulk = new MongoDB\Driver\BulkWrite;
 $bulk->insert(['x' => 1, 'name'=>'测试数据1', 'type' => 1,'desc'=>'描述1']);
 $bulk->insert(['x' => 2, 'name'=>'测试数据2', 'type' => 2,'desc'=>'描述2']);
 $bulk->insert(['x' => 3, 'name'=>'测试数据3', 'type' => 1,'desc'=>'描述3']);
 $bulk->insert(['x' => 4, 'name'=>'测试数据4', 'type' => 2,'desc'=>'描述4']);
 $bulk->insert(['x' => 5, 'name'=>'测试数据5', 'type' => 1,'desc'=>'描述5']);
 $bulk->insert(['x' => 6, 'name'=>'测试数据6', 'type' => 2,'desc'=>'描述6']);
 $mongodb->executeBulkWrite('message.test', $bulk);//数据写入(写入meaasge库的test表)
//数据查询
 $filter = ['x' => ['$lte' => 3]];
 $options = [
     'projection' => ['_id' => 0],
     'sort' => ['x' => 1],
 ];
 $query = new MongoDB\Driver\Query($filter, $options); // 查询数据(预处理语句)
 $cursor = $mongodb->executeQuery('message.test', $query);//执行查询
 foreach ($cursor as $document) {//数据循环输出
     print_r($document);
 }
//数据修改
 $bulk = new MongoDB\Driver\BulkWrite;
 $bulk->update(
     ['x' => 2],
     ['$set' => ['name' => '测试数据22', 'desc' => '描述22']],
     ['multi' => false, 'upsert' => false]
 );
 $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
 $result = $mongodb->executeBulkWrite('message.test', $bulk, $writeConcern);
 var_dump($result);
//数据删除
 $bulk = new MongoDB\Driver\BulkWrite;
 $bulk->delete(['x' => 1], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据,limit 为 0 时,删除所有匹配数据
 $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
 $result = $mongodb->executeBulkWrite('message.test', $bulk, $writeConcern);
 var_dump($result);
 die;










