<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在上一章的學習中,我們知道了Spring Data MongoDB的基本用法,但是對於一些聚合操作,還是不熟悉的,所以本部落格介紹一些常用的聚合函數
MongoDB 中使用聚合(Aggregations)來分析資料並從中獲取有意義的資訊。在這個過程,一個階段的輸出作為輸入傳遞到下一個階段
常用的聚合函數
聚合函數 | SQL類比 | 描述 |
---|---|---|
project | SELECT | 類似於select關鍵字,篩選出對應欄位 |
match | WHERE | 類似於sql中的where,進行條件篩選 |
group | GROUP BY | 進行group by分組操作 |
sort | ORDER BY | 對應欄位進行排序 |
count | COUNT | 統計計數,類似於sql中的count |
limit | LIMIT | 限制返回的資料,一般用於分頁 |
out | SELECT INTO NEW_TABLE | 將查詢出來的資料,放在另外一個document(Table) , 會在MongoDB資料庫生成一個新的表 |
使用阿里雲提供的腳手架快速建立專案:
https://start.aliyun.com/bootstrap.html
也可以在idea裡,將這個連結複製到Spring Initializr這裡,然後建立專案
jdk選擇8的
選擇spring data MongoDB
private static final String DATABASE = "test"; private static final String COLLECTION = "user"; private static final String USER_JSON = "/userjson.txt"; private static MongoClient mongoClient; private static MongoDatabase mongoDatabase; private static MongoCollection<Document> collection; @BeforeClass public static void init() throws IOException { mongoClient = new MongoClient("192.168.0.61", 27017); mongoDatabase = mongoClient.getDatabase(DATABASE); collection = mongoDatabase.getCollection(COLLECTION); collection.drop(); InputStream inputStream = MongodbAggregationTests.class.getResourceAsStream(USER_JSON); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); reader.lines() .forEach(l->collection.insertOne(Document.parse(l))); reader.close(); }
本部落格,不每一個函數都介紹,通過一些聚合函數設定使用的例子,加深讀者的理解
統計使用者名稱為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用法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45