当前位置: 首页 > news >正文

Yii2 mongodb分组查询

        $data = MongoDbModelName::getCollection()->aggregate([['$group' => ['_id' => '$user_id', //通过user_id分组去重'total' => ['$sum' => 1]],],['$match' => ['total' => ['$gt' => 1]]]],['allowDiskUse' => true]);

相当于

select user_id,count(1) as total from MongoDbCollection group by user_id having count(1) > 1

aggregate的第二个参数['allowDiskUse' => true],是表示允许使用内存,比如数据量大的时候,可以加上这个;如果数据量小的话,这个参数可以直接去掉。 如果需要按两个字段进行分组的话,可以将 $group 的_id指定为数组,如下:

$data = MongoDbModelName::getCollection()->aggregate([['$group' => ['_id' => ["aid":"$aid","user_id":"$user_id"],  //通过aid和user_id分组'total' => ['$sum' => 1]],],['$match' => ['total' => ['$gt' => 1]]]],['allowDiskUse' => true]);

相当于

select aid,user_id,count(1) as total from MongoDbCollection group by aid,user_id having count(1) > 1

如果要限制输出条数。可以在aggregate的第一个参数数组尾部中增加["$limit" => 1],必须是尾部,因为aggregate的会使用第一个参数的元素进行过滤,第一个元素过滤后的结果会给第二个元素,依次内推;实例如下

$data = MongoDbModelName::getCollection()->aggregate([['$group' => ['_id' => ["aid":"$aid","user_id":"$user_id"],  //通过aid和user_id分组'total' => ['$sum' => 1]],],['$match' => ['total' => ['$gt' => 1]]],['$limite' => 15]],['allowDiskUse' => true]);
http://www.lryc.cn/news/124970.html

相关文章:

  • Springboot的多种部署方式和Linux具体的 service 操作介绍
  • 【EI/SCOPUS检索】2023年第二届光学成像与测量国际会议 (ICOIM2023)
  • 6 个简单步骤,教你创建可视化看板工作流
  • 时间相减 示例kotlin LocalDateTime
  • Boost开发指南-4.5swap
  • OpenStack对接Ceph平台
  • 【Vue2】动态组件的使用-切换组件和keep-alive,以及异步组件
  • C++的IO流
  • nodejs+vue+elementui电影订票网站系统_wqc3k
  • 2023-08-14 linux 串口终端输入长命令不换行,覆盖前面内容,stty命令设置串口终端行列数
  • 根据指定日期获取周,月,季度,年的第一天和最后一天
  • CRMEB商城系统:便捷、安全、多样化的购物方式
  • 同步_异步请求和Ajax并利用axios框架简化
  • 取个对象值导致系统崩溃
  • nestjs 基础、使用 passport 来进行鉴权
  • 1.1 : DNA 螺旋
  • .gitignore匹配规则
  • Python-OpenCV中的图像处理-GrabCut算法交互式前景提取
  • JAVA 鼠标控制与键盘输入控制
  • VB+SQL宿舍管理系统设计与实现
  • 自律人生:戒断视频、游戏、小说、躺在床上不玩手机、睡觉前总结和冥想(提升注意力、专注度)
  • 学习笔记十四:K8S最小调度单元POD概述
  • ARM--day2(cpsr、spsr、数据搬移指令、移位操作指令、位运算操作指令、算数运算指令、比较指令、跳转指令)
  • idea报错:java: 程序包org.springframework.web.bind.annotation不存在
  • Android平台GB28181设备接入端如何实现多视频通道接入?
  • Evaluation Warning: The document was created with Spire.Doc for JAVA.
  • Java“牵手”根据关键词搜索(分类搜索)京东商品列表页面数据获取方法,京东API实现批量商品数据抓取示例
  • AIGC|AGI究竟是什么?为什么大家都在争先入场?
  • 【数学建模】--主成分分析
  • gitee(码云)如何生成并添加公钥,以及配置用户信息