统计用户名为User1的用户数量
@Test public void matchCountTest() { Document first = collection.aggregate( Arrays.asList(match(Filters.eq("name", "User1")), count())) .first(); log.info("count:{}" , first.get("count")); assertEquals(1 , first.get("count")); }
skip跳过记录,只查看后面5条记录
@Test public void skipTest() { AggregateIterable<Document> iterable = collection.aggregate(Arrays.asList(skip(5))); for (Document next : iterable) { log.info("user:{}" ,next); } }
对用户名进行分组,避免重复,group
第一个参数$name
类似于group by name
,调用Accumulators
的sum
函数,其实类似于SQL,SELECT name ,sum(1) as sumnum FROM
usergroup by name
@Test public void groupTest() { AggregateIterable<Document> iterable = collection.aggregate(Arrays.asList( group("$name" , Accumulators.sum("sumnum" , 1)), sort(Sorts.ascending("_id")) )); for (Document next : iterable) { log.info("user:{}" ,next); } }
参考资料
MongoDB 聚合 https://www.runoob.com/
MongoDB Aggregations Using Java
到此这篇关于SpringBoot系列之MongoDB Aggregations用法的文章就介绍到这了,更多相关SpringBoot MongoDB Aggregations用法内容请搜索