博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于mongodb的 数组分组 array group
阅读量:4198 次
发布时间:2019-05-26

本文共 1192 字,大约阅读时间需要 3 分钟。

mongodb支持array类型

在group的功能方面,mongodb确实不错。对于复杂的数据处理用mapreduce,但是这个玩意很慢,比较适合脚本处理数据,不适合实时数据查询

在实时数据处理方面得用管道,关于管道语法方面,参看:

http://blog.csdn.net/terry_water/article/details/43529367

如果$class_artist是数组,需要对数组里面的数据进行group,那么可以使用$unwind

,它的功能就是把数组拆分出来,形成多条数据。

db.articles.aggregate([  {$match: { class_date: { $gte: date } } },  {$project: { _id: 0, class_artist: 1 } },  {$unwind: "$class_artist" },  {$group: { _id: "$class_artist", tags: { $sum: 1 } }},  {$project: { _id: 0,class_artist: "$_id", tags: 1 } },  {$sort: { tags: -1 } }])
在yii2框架中:

可以在Query.php中加入一个函数:

对 $filter_size数组拆分,然后group。

public function filterSize($db = null){				$collection = $this->getCollection($db);        $pipelines = [];        if ($this->where !== null) {            $pipelines[] = ['?match' => $collection->buildCondition($this->where)];        }				$pipelines[] = ['?unwind'=>"\$filter_size"];				        $pipelines[] = [            '$group' => [                '_id' => "\$filter_size",                'num_total' => [                    '?sum'=> 1,                ],            ]        ];	$pipelines[] = ['?sort'=> ['_id'=> 1] ];		        $result = $collection->aggregate($pipelines);		return $result;       		}

你可能感兴趣的文章
世界卫生组织与腾讯加深合作 新冠肺炎AI自查助手全球开源
查看>>
Hibernate 中get, load 区别
查看>>
java反射详解
查看>>
JPA 注解
查看>>
JQuery 简介
查看>>
Java创建对象的方法
查看>>
Extjs自定义组件
查看>>
TreeGrid 异步加载节点
查看>>
Struts2 标签库讲解
查看>>
Google Web工具包 GWT
查看>>
材料与工程学科相关软件
查看>>
MPI的人怎么用仪器
查看>>
windows 下AdNDP 安装使用
查看>>
Project 2013项目管理教程(1):项目管理概述及预备
查看>>
ssh客户端后台运行
查看>>
哥去求职,才说了一句话考官就让我出去
查看>>
【React Native】把现代web科技带给移动开发者(一)
查看>>
【GoLang】Web工作方式
查看>>
Launch Sublime Text 3 from the command line
查看>>
【数据库之mysql】mysql的安装(一)
查看>>