mongo去重统计
表名:parkUserCost
id:
patkId:
userId:
phone:
costVal:
适合特定条件下,对某些字段进行去重筛选。(比如限定抢购)
第一种,使用\(first操作符。\)first 会把数组的第一个元素取出,作为一个对象。
// 第一种(可转java版本)
db.getCollection('parkUserCost').aggregate([
{"$match" : {
"$and" : [
// {"name" : "1640"} // 筛选条件
]
}
},
{"$group" : {
"_id" : "$phone",
"val" : {"$first" : "$costVal" },
}},
{"$group" : {
"_id" : {},
"totalVal" :{"$sum" : "$val"}
}}
])
第二种,使用$slice操作符。从数组的第几个开始,截取几个,保存到数组
// 第二种
db.getCollection('parkUserCost').aggregate([
{"$match" : {
"$and" : [
// {"name" : "1640"} // 筛选条件
]
}
},
{"$group" : {
"_id" : "$phone",
"val" : {"$push" : "$costVal" },
}},
{"$project" : {
"val" :{"$sum" :{"$slice" : ["$val", 0, 1 ] }}
}},
{"$group" : {
"_id" : {},
"totalVal" :{"$sum" : "$val"}
}}
])
第三种,使用$arrayElemAt,返回数组的第几个元素。序号的循环的,最后一个使用-1
// 第三种
db.getCollection('parkUserCost').aggregate([
{"$match" : {
"$and" : [
// {"name" : "1640"} // 筛选条件
]
}
},
{"$group" : {
"_id" : "$phone",
"val" : {"$push" : "$costVal" },
}},
{"$project" : {
"val" : { "$arrayElemAt" :[ "$val" , 0] }
}},
{"$group" : {
"_id" : {},
"totalVal" :{"$sum" : "$val"}
}}
])
若要表中的全部字段,可使用$$ROOT获取
db.getCollection('parkUserCost').aggregate([
{"$match" : {
"$and" : [
// {"name" : "1640"} // 筛选条件
]
}
},
{"$group" : {
"_id" : "$phone",
"item": {"$first": "$$ROOT"},
"val" : {"$first" : "$costVal" },
}},
])
http://www.runoob.com/mongodb/mongodb-tutorial.html
mongo去重统计的更多相关文章
- thinkphp去重统计数据sql
DISTINCT 方法用于返回唯一不同的值 官方文档给出的示例: $Model->distinct(true)->field('userName')->select(); 解析的SQ ...
- Linux命令去重统计排序
利用Linux命令进行文本按行去重并按重复次数排序 linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去 ...
- Linux sort 排序 去重 统计
先写一个命令: cut -d' ' -f1 ~/.bash_history|sort -d | uniq -c|sort -nr|head 这个命令可以统计你历史上输入的命令的次数的前十条 整个命令基 ...
- Flink去重统计-基于自定义布隆过滤器
一.背景说明 在Flink中对流数据进行去重计算是常有操作,如流量域对独立访客之类的统计,去重思路一般有三个: 基于Hashset来实现去重 数据存在内存,容量小,服务重启会丢失. 使用状态编程Val ...
- TinkPHP去重统计查询
当统计一个有重复的字段可以用这个方法 $count = $model->where($map)->count('distinct(id)'); 转自 http://www.thinkphp ...
- 网站每日UV数据指标去重统计
package com.iexecloud.cloud.casemanager;import redis.clients.jedis.Jedis;import java.text.SimpleDate ...
- 统计Mongo数组中相同对象的属性之和
统计Mongo数组中相同对象的属性之和 需求 需要统计app端用户的行为,按天分表,存入mongo.每次用户进行操作的时候,将数据存入app本地,下次用户启动的时候,提交存入mongo,删除app本地 ...
- 常用的数据统计Sql 总结
最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与使用. 所以,分享几个数据统计时常用的sql 语句总结: 1. 统计各个条件下的数据 select Batc ...
- 常用的数据统计Sql 总结(转)
转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与 ...
随机推荐
- 毕设(一)C#的百度api调用
这个学期就要毕业了,选了一个无人机地面站软件设计的题目,这几天也开始着手做, 首先做了一个百度地图的调用,这里因为是上位机的开发,所有就不介绍Javascript的 调用方法,核心是用到一个类Http ...
- GNU自动化工具使用全过程详解,以及在线手册
[root@localhost test3]# cat add.h#ifndef _ADD_H_#define _ADD_H_ extern int add(int, int); #endif [ro ...
- MySQL中临时表的基本创建与使用教程(CREATETEMPORARY TABLE)
当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询. ...
- windows下进程间通信的(13种方法)
转自:http://blog.csdn.NET/shiqz/article/details/5862936 摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求.编写多进 ...
- [转]UE的职责
最近开始负责产品工作,从产品定位到需求文档再到原型设计,以及后续产品的路线规划,渐渐感觉忙不过来了.所以准备招一个UE/X来辅助. 以前做项目,也没接触过什么UE,所以对UE的工作不是很清楚,尤其是P ...
- Spark之SparkSql
-- Spark SQL 以编程方式指定模式 val sqlContext = new org.apache.spark.sql.SQLContext(sc) val employee = sc.te ...
- TCP UDP socket http webSocket 之间的关系
---恢复内容开始--- OSI&TCP/IP模型 要弄清tcp udp socket http websocket之间的关系,首先要知道经典的OSI七层模型,与之对应的是TCP/IP的四层模 ...
- 09 Javascript的伪数组 arguments
arguments代表的是实参.有个讲究的地方是:arguments只在函数中使用. (1)返回函数实参的个数:arguments.length 例子: fn(2,4); fn(2,4,6); fn( ...
- 节能减排到底如何----google earth engine 告诉你!!
(First,再次严谨说明,本人成果未经允许,切勿发表到相关学术期刊,如果有技术交流,qq1044625113,顺便打个广告,兼职GEE开发,欢迎联系!) 终于过了严寒的冬天,2017年的冬天中国南方 ...
- HBase —— 单机环境搭建
一.安装前置条件说明 1.1 JDK版本说明 HBase 需要依赖JDK环境,同时HBase 2.0+ 以上版本不再支持JDK 1.7 ,需要安装JDK 1.8+ .JDK 安装方式见本仓库: Lin ...