MongoDB 之CURD操作

class DB
{
    //public static $db ='runoob';
    public static $link = false;
    public static $ReadPreference = false;
    public static $WriteConcern = false;
    public function getMongoDB(){
        try {
            if(!self::$link){
                $Mconfig = \Yaf_Application::app()->getConfig()->mongo;
                $link = 'mongodb://'.$Mconfig->user.':'.$Mconfig->passwd.'@'.$Mconfig->ip.':'.$Mconfig->port;
                $linkInfo = new MongoDB\Driver\Manager($link);
            }

            return self::$link = $linkInfo;

        } catch (Exception $e) {
            print $e->getMessage();exit();
        }
    }
    //CURD 批量操作类
    public static function BulkWrite()
    {
        return new MongoDb\Driver\BulkWrite();
    }
    //数据库查询
    public static function  MQuery($filer,$option)
    {  
       $query = new MongoDb\Driver\Query($filer,$option);
       $mongo = self::getMongoDB();
       $data = $mongo -> executeQuery('runoob.runoob',$query);
       return $data->toArray();
    }
    //序列化数据
    public static function WriteConcern($data)
    {
        if (!self::$WriteConcern) {
              self::$WriteConcern  = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
        }
        return self::$WriteConcern;

    }
    //
    public static function ReadPreference()
    {
        if(!self::$ReadPreference){
            self::$readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED);
        }
        return self::$ReadPreference;
    } 

    //操作db 的 集合
    public static function MSDBC($db , $collectionName)
    {
        return $db.'.'.$collectionName;
    }
    //插入数据
    public static function MInsert($data,$db_collection)
    {
         $mongo = self::getMongoDB();
         $BulkWrite = self::BulkWrite();

         $BulkWrite->insert($data);
         return  $mongo->executeBulkWrite($db_collection,$BulkWrite);  

    }
    //查询数据
    public static function MSelect($filter,$options,$db,$collectionName)
    {
        $this->MQuery($filter,$options,$db,$collectionName);

    }
    //修改数据
    public static function Mupdate($where,$db_collection,$data, $extra = array('multi' => false, 'upsert' => false))
    {   
        $mongo  = self::getMongoDB();
        $BulkWrite = self::BulkWrite();
        $writeConcern = self::WriteConcern();

        //$BulkWrite->update($where,$data,$extra);['$set' =>['key1'=>'key1__value1__test']]
        $BulkWrite->update($where,$data,$extra);

        return $mongo->executeBulkWrite($db_collection,$BulkWrite,$writeConcern);

    }
    //删除数据
    public static function MDelect($where,$db_collection,$extra=array('limit' => 1))
    {
        $mongo = self::getMongoDB();
        $BulkWrite = self::BulkWrite();
        $writeConcern = self::WriteConcern();

        $BulkWrite->delete($where,$extra);
        return $mongo ->executeBulkWrite($db_collection,$BulkWrite,$writeConcern);

    }   

}
##test
 $Mon = new DB();
      //$mongodb = $Mon ->getMongoDB();
      //$where = ['title'=>'军事新闻'];
      //$data = $Mon->MQuery($where);

      //$data =  ['key1'=>'test1','key2'=>'value'];
      $db_collection =  'runoob.runoob';
      //var_dump( $Mon ->MInsert($data,$db_collection));
      //seaslog::info();

      //$where = ['key1'=>'test1'];
      //var_dump($Mon -> MDelect($where,$db_collection));

      $where = ['key1' =>'3407aaaaaaaaa'];
      $data = ['$set' =>['key1'=>'3434343434'] ];
      var_dump($Mon ->Mupdate($where,$db_collection,$data));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值