zoukankan      html  css  js  c++  java
  • php7Mongodb操作CURD和聚合分组求和

    <?php
    //初始化
    $manager = new MongoDBDriverManager("mongodb://localhost:27017");
    
    // 插入数据
    $bulk = new MongoDBDriverBulkWrite;
    $bulk->insert(['x' => 1, 'name'=>'菜鸟教程', 'url' => 'http://www.runoob.com']);
    $bulk->insert(['x' => 2, 'name'=>'Google', 'url' => 'http://www.google.com']);
    $bulk->insert(['x' => 3, 'name'=>'taobao', 'url' => 'http://www.taobao.com']);
    $manager->executeBulkWrite('test.sites', $bulk);
    
    /**
     *  $lt  小于
     *  $lte 小于等于
     *  $gt  大于
     *  $gte 大于等于
     *  $ne  不等于
     *  $in  包含
     *  $nin 不包含
     * */
    $filter = ['x' => ['$gt' => 0]]; //大于
    $filter = ['x' => ['$lt' => 5]]; //小于
    $filter = ['name' => 'Google'];  //等于
    $filter = ['name' => ['$regex' => '教程']]; //模糊查询
    $filter = ['x' => ['$in' => [1,2]]]; //in用法
    $options = [
        'projection' => ['_id' => 0], //key为查询的字段 value 1:显示 0:隐藏
        'sort' => ['x' => 1], //1升序 -1降序
        'limit' => 0, //限制查询条数
    ];
    
    // 查询数据
    $query = new MongoDBDriverQuery($filter, $options);//查询请求
    $cursor = $manager->executeQuery('test.sites', $query);
    foreach ($cursor as $document) {
        $document = objectToArray($document);
        print_r($document);
    }
    
    //更新
    $bulk = new MongoDBDriverBulkWrite;
    $bulk->update(
        ['x' => 2],
        ['$set' => ['name' => '菜鸟工具', 'url' => 'tool.runoob.com']],
        ['multi' => false, 'upsert' => false]
    );
    $writeConcern = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::MAJORITY, 1000);
    $result = $manager->executeBulkWrite('test.sites', $bulk, $writeConcern);
    var_dump($result);
    
    //删除
    $bulk = new MongoDBDriverBulkWrite;
    $bulk->delete(['x' => 1], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据
    $bulk->delete(['x' => 2], ['limit' => 0]);   // limit 为 0 时,删除所有匹配数据
    $writeConcern = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::MAJORITY, 1000);
    $result = $manager->executeBulkWrite('test.sites', $bulk, $writeConcern);
    var_dump($result);
    
    //聚合查询 $match:分组搜索条件 count:分组后求个数 sum:分组后求和
    $param = [
        'aggregate' => 'sites', //表名
        'pipeline'  => [
            ['$match' => ['x' => 2]],
            ['$group' => ['_id' => '$name', 'count' => ['$sum' => 1]]],
        ],
        'cursor'    => new stdClass()// 高版本需要带上这个值
    ];
    
    $command = new MongoDBDriverCommand($param);
    $cursor = $manager->executeCommand('test', $command);
    foreach ($cursor as $document) {
        $document = objectToArray($document);
        var_dump($document);
    }
    
    function objectToArray($object){
        $result = array();
        $object = is_object($object) ? get_object_vars($object) : $object;
        foreach ($object as $key => $val) {
            $val = (is_object($val) || is_array($val)) ? objectToArray($val) : $val;
            $result[$key] = $val;
        }
        return $result;
    }
  • 相关阅读:
    APACHE POI教程 --java应用程序用POI与Excel交互
    Java8初体验(一)lambda表达式语法
    使用Struts 2框架实现文件下载
    常用的MIME类型
    Java8初体验(二)Stream语法详解
    XStream使用总结
    Criteria 和 DetachedCriteria的区别与使用
    Class.isAssignableFrom(Class clz)与instanceof与Class.isInstance(Object obj) 的区别和联系
    xStream完美转换XML、JSON
    spring之BeanFactoryAware接口
  • 原文地址:https://www.cnblogs.com/dawuge/p/14583986.html
Copyright © 2011-2022 走看看