zoukankan      html  css  js  c++  java
  • Yii2的mongodb的聚合操作

    最近项目使用到mongodb的聚合操作,但是yii文档中对这方面资料较少,记录下

            $where['created_time'] = ['$gt' => "$start_date_str", '$lte' => "$end_date_str"];
            $where['token'] = ['$ne' => null];
            $where['app'] = $app;
            $where['source_type'] = $source_type;
            $loanmarket_info = Loanmarket::find()->asArray()->orderBy('created_time DESC')->all();
            if (!empty($keyword)) {
                $loanmarket_info = Loanmarket::find()->where(['or',['like','name',$keyword],['like','number',$keyword]])->asArray()->orderBy('created_time DESC')->all();
                $keyword_arr = array_reduce($loanmarket_info, function ($result, $value) {
                    return array_merge($result, array_values($value));
                }, array());
                if (!empty($keyword_arr)) {
                    $where['lm_number'] = ['$in' => $keyword_arr];
                }
            }
    
            $aggregate = [
                ['$match' => $where]    // 按照创建时间筛选,同时 token 不为空
                , ['$group' => ["_id" => ["lm_number" => '$lm_number', "source_type" => '$source_type', "app" => '$app', "token" => '$token']]]  // token 去重
                , ['$group' => ["_id" => ["lm_number" => '$_id.lm_number', "source_type" => '$_id.source_type', "app" => '$_id.app'], "COUNT(token)" => ['$sum' => 1]]]  // 统计UV
                , ['$project' => ["_id" => 0, "lm_number" => '$_id.lm_number', "source_type" => '$_id.source_type', "app" => '$_id.app', "uv" => '$COUNT(token)']] // 显示相应的字段
            ];
    //        $query = new yiimongodbQuery;
    //        $data_arr = $query->from(['数据库名','数据表名'])->offset(3)->limit(5)->aggregate($aggregate);
            $data_arr = MongoBizEventReport::getCollection()->aggregate($aggregate);
    

      

  • 相关阅读:
    bzoj3505 数三角形 组合计数
    cogs2057 殉国 扩展欧几里得
    cogs333 荒岛野人 扩展欧几里得
    bzoj1123 BLO tarjan求点双连通分量
    poj3352 road construction tarjan求双连通分量
    cogs1804 联合权值 dp
    cogs2478 简单的最近公共祖先 树形dp
    cogs1493 递推关系 矩阵
    cogs2557 天天爱跑步 LCA
    hdu4738 Caocao's Bridge Tarjan求割边
  • 原文地址:https://www.cnblogs.com/two-bees/p/10483435.html
Copyright © 2011-2022 走看看