JAVA操作MongoDB聚合函数简单用法

  • Post author:
  • Post category:java


        //获取数据库客户端
		client = new MongoClient(mongoUrl, mongoPort);
		//根据客户端获取数据库连接
		db = client.getDatabase("wechat");
		//获取指定集合
		MongoCollection<Document> collection = db.getCollection("user_feedback");
		List<BasicDBObject> ops = new ArrayList<BasicDBObject>();
		
		BasicDBObject match = new BasicDBObject("$match",new BasicDBObject("title","这个是标题"));
		ops.add(match);
		
		//group分组,_id是唯一标识,后面加$ + 想要分组的字段。count(随意起名)统计$sum统计求和1是一倍,2会求2倍。
//		BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id","$update_date")
//				.append("count", new BasicDBObject("$sum", 1)));
		//输出结果,七个20210623111345,一个20210624111345
//		{"count":7,"_id":"20210623111345"}
//		{"count":1,"_id":"20210624111345"}
		
		//其他和上面同理,$avg求平均值后面跟$ + 想要求平均值得字段(必须是数值类型,String类型无效)
//		BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$update_date")
//				.append("count", new BasicDBObject("$avg", "$solve")));
		//输出结果
//		{"count":1.8571428571428572,"_id":"20210623111345"}
//		{"count":2.0,"_id":"20210624111345"}
		
		//$min求最小值,后面跟$ + 想要求最小值的字段
//		BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$update_date")
//				.append("count", new BasicDBObject("$min", "$solve")));
		
		//$max求最大值,后面跟$ + 想要求最大值的字段
//		BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$update_date")
//				.append("count", new BasicDBObject("$max", "$solve")));
		
		//$push在结果文档中插入一个值到数组中,后面跟想要插入的值
//		BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$update_date")
//				.append("count", new BasicDBObject("$push", "$solve")));
		//输出结果
//		{"count":[1,2,2,2,2,2,2],"_id":"20210623111345"}
//		{"count":[2],"_id":"20210624111345"}
		
		//$addToSet在结果文档中插入一个值到数组中,会自动去重,后面跟想要插入的值
//		BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$update_date")
//				.append("count", new BasicDBObject("$addToSet", "$solve")));
		//输出结果
//		{"count":[2,1],"_id":"20210623111345"}
//		{"count":[2],"_id":"20210624111345"}
		
		//根据文档中的排序获取第一个文档数据
//		BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$update_date")
//				.append("count", new BasicDBObject("$first", "$_id")));
		
		//根据文档中的排序获取最后一个文档数据
//		BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$update_date")
//				.append("count", new BasicDBObject("$last", "$_id")));
//		ops.add(group);
		
		//project只查询某一个字段,这里是只查询title字段,(0是不查询,1是查询)_id字段默认为1,其他字段默认为0
//		BasicDBObject project = new BasicDBObject("$project", new BasicDBObject("_id", 0).append("title", 1));
//		ops.add(project);
		
		//sort按照指定字段给文档排序,1是升序,-1是降序
//		BasicDBObject sort = new BasicDBObject("$sort", new BasicDBObject("_id", -1));
//		ops.add(sort);
		
		//limit是查询几条数据,配合skip就是从第几条开始到第几条结束如下就是从第3条到到第4条
		BasicDBObject limit = new BasicDBObject("$limit", 4);
		ops.add(limit);
		BasicDBObject skip = new BasicDBObject("$skip", 2);
		ops.add(skip);

		AggregateIterable<Document> aggregate = collection.aggregate(ops);
		MongoCursor<Document> iterator = aggregate.iterator();
		while (iterator.hasNext()) {
			Document next = iterator.next();
			JSONObject parseObject = JSONObject.parseObject(next.toJson().toString());
			System.err.println(parseObject);
		}



版权声明:本文为zxczxc_123123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。