被MongoDB用各種武器暴打的後端小菜雞日記-目錄鰻魚燒·FollowOct 1, 2022--Share本篇文章搜集我參加第14屆鐵人賽所有文章,方便大家可以快速瀏覽,找到自己有興趣的主題閱讀。Photo by Sylvia Yang on Unsplash被MongoDB用Aggregate暴打的後端小菜雞日記-day1 序言嗨!!大家好,我是剛轉職成後端工程師的鰻魚燒medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day2 什麼是aggregate pipeline?什麼是Aggregate呢?基本上你可以想像它是一種搜尋功能,跟find指令很像,但功能比它更多元。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day3-基本使用懶人包今天要來介紹$sort、$skip、$limit這三個操作符medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day4-用$match篩選資料我們在day2的時後,就有介紹到如何使用$match搜尋想要的資料,今天要再更深入的介紹可以和$match一起搭配的相關操作符。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day5-轉變資料格式今天要來介紹一下,我之前在使用$match搜尋時,踩到的雷點,資料型態不同!! 就像數字1和文字"1",對我們來說看起來一樣,但程式在運行判讀會是不一樣的值,因為類似的原因,導致我搜尋不到想要的資料。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day6-用$project新增欄位在day2的時候,有介紹到$project可以用來決定我們想要回傳的資料有哪些,今天會再跟深入介紹$project的用法,以及可以跟它搭配使用的操作符。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day7-用$group將資料分組(上)今天我們要介紹$group,它可以將資料進行分組,同時進行特定的運算,回傳運算後的結果。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day8-用$group將資料分組(下)今天將延續昨天的主題,繼續講可以和$group一起搭配的操作符。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day9-$lookup將兩個collection的資料合併(上)一開始在使用MongoDB的時候,總是在想它不像MySQL關聯資料庫一樣,可以做兩張資料表的join,要把兩個collection的資料,分別搜尋自己組合好麻煩,還是MySQL比較好。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day10-$lookup將兩個collection的資料合併(下)今天延續昨天的主題,來介紹$lookup進階的用法,在做join的同時,使用pipeline整理、計算資料。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day11- 用$sample、$rand隨機取得資料前面十天介紹不少aggregate用法,以簡單的小型專案來說,這些操作符基本上都夠用,熟練之後如果有接到其他特別的需求,其實自己再去MongoDB官網上找其他的操作符使用,不會有太大的問題,官網很貼心附上語法的範例,以及處理前後的資料。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day12-$cond、$switch條件判斷相信大家在寫程式碼的時候,一定都會用到if/else根據不同的條件,執行不同的程式碼,有時候如果條件多一點的話,還會使用switch。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day13-$bucket 桶子分組今天要來介紹aggregate比較進階的用法$bucket,這個操作符它的用法很類似$group,都是可以將資料透過特定欄位進行分組。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day14-$facet 一次使用多個pipeline看了這麽多天的文章,是否覺得aggregate用來搜尋資料真的很好用,其實它另一個很神奇的用法$facet,可以讓你使用同一個collection的資料,但是分別使用不同的pipeline算法,得出不同的結果出來。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day15-$merge 將資料寫回資料庫當你好不容易寫好一連串的aggregate,想要將整理好的資料寫回資料庫內,這時候就可以使用$merge將資料寫入,使用上必須特別注意,一定要放在pipeline最後一個位置,不然會直接噴錯誤訊息,「MongoError: $merge…medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day16-陣列操作符(上)接下來幾天,都會專注在各個資料型態相關的操作符,包含陣列、日期時間、文字,介紹有什麼好用的功能,今天先從陣列開始。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day17-陣列操作符(中)今天繼續昨天的主題,講解陣列操作符的部分,比較不一樣的是今天用來舉例的陣列資料,會比昨天在複雜一點,同時也會用比較多不一樣的範例,來講解不同的的與法,因為每種語法適用的場景比較不一樣。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day18-陣列操作符(下)今天是最後一天介紹陣列操作符,當初在查資料的時候,完全沒有想到這個主題可以寫三天,但事實上我只有拉出,我比較有興趣的操作符來說明。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day19-日期時間操作符(上)結束連續三天陣列操作符的介紹,讓我們往下一個主題邁進,介紹日期時間相關的操作符,今天主要專注在取得一個日期資料中,它的年份、月份…等等相關的操作。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day20-日期時間操作符(下)今天延續昨天的主題,繼續講解日期時間相關操作符,但主要會專注在時區、時間資料格式的轉換部分。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day21-文字操作符文字操作符其實有很多種類可以講,像是大小寫轉換、找特定字在文字中的位置、將字串合併等等,就讓我們一一做舉例。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day22-那些年你不知道的Aggregate大小事介紹20天的Aggregation…medium.com被MongoDB用Index暴打的後端小菜雞日記-day 23- 什麼是index?誒誒誒誒!!MongoDB竟然換武器攻擊小菜雞了,難道是小菜雞終於成長到,可以輕鬆接下aggregate的攻擊,所以換武器了嗎?(才不是作者想不到aggregate還有什麼運用可以介紹,所以換主題的)medium.com被MongoDB用Index暴打的後端小菜雞日記-day 24- index使用懶人包昨天講解index的資料結構,今天我們要來講解index相關的設定,我們應該選擇哪些欄位,建立索引,以及不同的索類型。medium.com被MongoDB用Index暴打的後端小菜雞日記-day25-建立index的順序 (ESR rule)昨天介紹到建立單一個欄位索引的方式,今天我來介紹如何建立複合索引(Compound Index),以及它背後運行的規則ESR rule (equality-sort- range…medium.com被MongoDB用Index暴打的後端小菜雞日記-day26-Index Property前幾天大致介紹過如何建立好一個index,以及主要參照的規則,今天則是要介紹各種不同 index 的特性,以及它們各自會用到的場景。medium.com被MongoDB用Index暴打的後端小菜雞日記-day27- Index Types昨天介紹不少索引好用的特性,除了加快資料搜尋速度以外,還有不同的功能,適合用在不同的情境下,今天要來介紹基於欄位的資料型態不同,而分出不同的索引類型。medium.com被MongoDB用bulkWrite暴打的後端小菜雞日記-day28-那些年被你遺漏的CRUD方法花了六天講解Index之後,不曉得大家對建立索引是否有一些概念,至少知到如何建立索引吧?medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day29番外篇-後端菜雞轉職記由於MongoDB我覺得能介紹的都介紹的差不多,為了能湊齊30天的文章,今天來分享一下,身為一個半路出家的轉職者,為何下定決心轉職,轉職的路上又遇到哪些困難。medium.com被MongoDB用Aggregate暴打的後端小菜雞日記-day30-完賽感言歷經千辛萬苦終於撐過30天了,其實寫到第10天的時候就有一點後悔,為什麼當初要選這個主題,主題選得太小很難完整的靠Aggregate講完30天,只能在最後放入index內容。medium.com最後如果對SQL有興趣的話,可以參考新的系列文誤入SQL叢林的後端小菜雞週記會想做這個主題,主要是因為之前想要定期將自己的技術筆記寫部落格,但因為各種拖延症發作,從大概1–2週發一次文、變成月更,之後就拖到鐵人賽開賽之前都沒有發文。medium.com