import java.net.UnknownHostException;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
public class MongoDBTest {
private static DB db = null; static{
Mongo mongo = null;
try {
mongo = new Mongo("localhost", 27017);
} catch (UnknownHostException e) {
e.printStackTrace();
}
db = mongo.getDB("TestDB"); //连接数据
} /**
* select count(*) from list
*/
public Long m1() {
DBCollection collection = db.getCollection("list");
return collection.count();
} /**
* select count(*) from list where userId = 'orange'
*/
public Long m2(){
DBCollection listCollection = db.getCollection("list");
BasicDBObject query =new BasicDBObject();
query.put("userId", "orange");
return listCollection.count(query);
} /**
* select count(*) from list where userId = 'orange' and time >= '20101201' and time <= '20101211'
*/
public Long m3(){
DBCollection listCollection = db.getCollection("list");
BasicDBObject query =new BasicDBObject();
query.put("userId","orange");
query.put("time", new BasicDBObject("$gte", "20101201").append("$lte", "20101211"));
return listCollection.count(query);
} /**
* select count(distinct(userId)) from detail where time >= '20101201' and time <='20101211'
*/
public int m4() {
DBCollection collection = db.getCollection("detail");
BasicDBObject query = new BasicDBObject();
query.put("time", new BasicDBObject("$gte", "20101201").append("$lte", "20101211"));
return collection.distinct("userId", query).size();
} /**
* select date_format(time, '%Y-%m-%d %H') as sj ,count(*) from detail group by sj
*/
public void m5() {
DBCollection collection = db.getCollection("detail");
String formatDate = "function(obj,doc){"
+ "var date = new Date(doc.time);"
+ "var dateKey = date.getFullYear()+\"-\"+(date.getMonth()+1)+\"-\"+date.getDate(); "
+ "return {'time':datekey}" + "}";
BasicDBObject key = new BasicDBObject();
key.put(formatDate, true); // 要分组的列
BasicDBObject query = new BasicDBObject(); // where条件
String reduce = "function (obj, prev) {prev.count++}";
BasicDBObject initial = new BasicDBObject();
initial.append("count", 0); // 每列初始值
BasicDBList group = (BasicDBList) collection.group(key, query, initial, reduce);
System.out.println(group);
} }

MongoDB count distinct group by JavaAPI查询的更多相关文章

  1. distinct group by 去重查询

    select * from dc_restaurants;  31 select DISTINCT (restaurant_name),id from dc_restaurants ; 31 (会按照 ...

  2. count(distinct) 与group by 浅析

    x在传统关系型数据库中,group by与count(distinct)都是很常见的操作.count(distinct colA)就是将colA中所有出现过的不同值取出来,相信只要接触过数据库的同学都 ...

  3. ElasticSearch中"distinct","count"和"group by"的实现

    最近在业务中需要使用ES来进行数据查询,在某些场景下需要对数据进行去重,以及去重后的统计.为了方便大家理解,特意从SQL角度,方便大家能够理解ES查询语句. 1 - distinct ; { &quo ...

  4. MongoDB 之 aggregate $group 巧妙运用

    有这样一组数据: { "campaign_id": "A", "campaign_name": "A", "s ...

  5. 使用子查询可提升 COUNT DISTINCT 速度 50 倍

    注:这些技术是通用的,只不过我们选择使用Postgres的语法.使用独特的pgAdminIII生成解释图形. 很有用,但太慢 Count distinct是SQL分析时的祸根,因此它是我第一篇博客的不 ...

  6. mysql查询不重复的行内容,不重复的记录数.count,distinct

    有这么一个表 记录了id, p_id, p_name , p_content , p_time 1  343        aaa            aaaaaa   2012-09-01 2   ...

  7. PostgreSQL的查询技巧: 零除, GENERATED STORED, COUNT DISTINCT, JOIN和数组LIKE

    零除的处理 用NULLIF(col, 0)可以避免复杂的WHEN...CASE判断, 例如 ROUND(COUNT(view_50.amount_in)::NUMERIC / NULLIF(COUNT ...

  8. 使用GROUP BY统计记录条数 COUNT(*) DISTINCT

    例如这样一个表,我想统计email和passwords都不相同的记录的条数 CREATE TABLE IF NOT EXISTS `test_users` ( `email_id` ) unsigne ...

  9. php查询mysql时,报超出内存错误(select count(distinct))时

    学时服务器查询教练所带人数时,使用select count(distinct(u_STRNO))时报超出内存错误.后参考“mysqld-nt: Out of memory解决方法”http://jin ...

随机推荐

  1. vue svg的使用

    项目要求: 需要把websocket推送的数据进行展示.不停地刷掉旧的数据.但是需要根据数据坐标圈出来对应的车辆. 开始使用的是canvas进行画图,思路是使用absolute定位,for循环,在图片 ...

  2. .net 参数修饰符

    参数修饰符的作用 参数修饰符 作用 无 如果一个参数没有用参数修饰符标记,则认为它将按值传递(pass by value),这意味着被调用的方法收到原始数据的一份副本 out 输出参数由被调用的方法赋 ...

  3. Redis-server在windows下闪退

    在win7下使用Redis(windows版)很简单,只需要去Git上下载一个压缩包,解压运行即可.但是前段时间发现win10下双击redis-server既然闪退.非常不解... 在观察了错误日志才 ...

  4. POJ——T1125 Stockbroker Grapevine

    http://poj.org/problem?id=1125 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36045   ...

  5. Post请求方式长度參数过长导致參数为空

    Post提交方式本身对于參数的长度没有限制,HTTP协议也没有限制. 可是今天在做一个web项目的时候碰到一个问题,当要提交的表单内容达到一定大小时,发现后台代码接收到的參数为空. 查询了一下.发现是 ...

  6. node10---GET请求和POST请求的参数

    GET请求的参数在URL中,在原生Node中,需要使用url模块来识别参数字符串.在Express中,不需要使用url模块了.可以直接使用req.query对象. ● POST请求在express中不 ...

  7. poj_3071概率dp

    确定好对手就简单了. #include<iostream> #include<cstdio> #include<cstring> #include<algor ...

  8. bzoj1293: [SCOI2009]生日礼物(stl堆)

    1293: [SCOI2009]生日礼物 题目:传送门 题解: 据说这道题乱搞随便就水过了 本蒟蒻想到了一个用堆的水法(还专门学了学queue): 如果把每一种颜色的下一个位置都记录一下的话,一开始就 ...

  9. ie浏览器检测不到cookie的问题

    之前做项目由于客户的要求设置缓存必须由后台来设置必须使用cookie(session是没问题的),后期设置时出现了登录页面与首页来还跳转的局面.原因就是首页没检测到登录后的缓存,而后台验证到确实已经是 ...

  10. 如何让一台IIS服务器实现多个网站https访问

    找到注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslSniBindingInfo,将注册表值改 ...