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 \yii\mongodb\Query;
// $data_arr = $query->from(['数据库名','数据表名'])->offset(3)->limit(5)->aggregate($aggregate);
$data_arr = MongoBizEventReport::getCollection()->aggregate($aggregate);
Yii2的mongodb的聚合操作的更多相关文章
- MongoDB的聚合操作以及与Python的交互
上一篇主要介绍了MongoDB的基本操作,包括创建.插入.保存.更新和查询等,链接为MongoDB基本操作. 在本文中主要介绍MongoDB的聚合以及与Python的交互. MongoDB聚合 什么是 ...
- MongoDB入门---聚合操作&管道操作符&索引的使用
经过前段时间的学习呢,我们对MongoDB有了一个大概的了解,接下来就要开始使用稍稍深入一点的东西了,首先呢,就是MongoDB中的聚合函数,跟mysql中的count等函数差不多.话不多说哈,我们先 ...
- mongodb的聚合操作
在mongodb中有时候我们需要对数据进行分析操作,比如一些统计操作,这个时候简单的查询操作(find)就搞不定这些需求,因此就需要使用 聚合框架(aggregation) 来完成.在mongodb ...
- mongodb aggregate 聚合 操作(扁平化flatten)
mongodb自带的函数非常多,最近用mongo做持久化数据库,遇到一个需求:子文档是个数组,把数组里的各个字段扁平化合到根文档中,查过资料后(主要是mongodb的文档和stackoverflow) ...
- mongodb高级聚合查询
在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...
- mongodb高级聚合查询(转)
在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...
- mongodb 高级聚合查询
mongodb高级聚合查询 在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysq ...
- MongoDB 聚合操作
在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...
- MongoDB学习笔记——聚合操作之聚合管道(Aggregation Pipeline)
MongoDB聚合管道 使用聚合管道可以对集合中的文档进行变换和组合. 管道是由一个个功能节点组成的,这些节点用管道操作符来进行表示.聚合管道以一个集合中的所有文档作为开始,然后这些文档从一个操作节点 ...
随机推荐
- 使用Guava获取某一个类的指定超类上的泛型Type T
package com.geostar.gfstack.operationcenter.log.common.hibernate; import com.geostar.gfstack.operati ...
- float数组转字符串实施方案小记
float[] floats = {1.2f , 3.5f , 6.4f}; Double[] doubles = IntStream.range(0, floats.length).mapToDou ...
- windoows ftp的自动上传bat
@echo off set P=%cd% #获取脚本当前文件路径 del /f /s /q %P%\tmp.txt set Y=%DATE:~0,4% #获取年 set M=%DATE:~5,2% # ...
- Paths on a Grid POJ - 1942 组合数学 (组合数的快速计算)
题意:格路问题 没什么难度 难点在于如何快速计算相对较大的组合数 思路:运用手写计算组合数的方式进行计算 如c(8,3) 如果手算就是 8*7*6/(3*2*1)这样可以很快得解出 计算代码为: ...
- 洛谷P2055假期的宿舍
题目 此题主要是考察二分图匹配,而二分图匹配最主要的就是建图,而图一般都是要分成两个部分来分,比如该题就需要先将在学校住的人和床连在一起,因为在学校住就会与一个床.然后每两个人之间假如他们相互认识就可 ...
- hashlib 模块用来进行hash
hashlib的基本概述: python中的 hashlib 模块用来进行hash 或者md5加密,而且这种加密是不可逆的,所以这种算法又被称为摘要算法, 其支持Opennssl库提供的所有算法,包括 ...
- 【XSY2745】装饰地板 状压DP 特征多项式
题目大意 你有\(s_1\)种\(1\times 2\)的地砖,\(s_2\)种\(2\times 1\)的地砖. 记铺满\(m\times n\)的地板的方案数为\(f(m,n)\). 给你\(m, ...
- python_sort(key=) 的使用
""" sort() 函数内含有 key 可以指定相关的函数来作为排序依据 比如这里指定每一项的索引为1 的元素作为排序依据 默认是以第一个作为排序依据 "&q ...
- day5 笔记
笔记 字符格式化输出: 占位符%s s=string 字符型%d d=dight 整数型%f f=float 浮点数 约等于小数 通过格式:%(str1,str2,str3)一一对应 数据运算 数据类 ...
- hiho1249 Xiongnu's Land
题目链接:http://hihocoder.com/problemset/problem/1249 题目大意:有一个大正方形里面有好多不重叠的小矩形,怎么找出一条竖线分割这个正方形,使得两边的矩形面积 ...