原本學SQL的時候,心想:原來這就是資料庫啊!太燒腦了吧(以前怎麼傻傻的以為Excel就夠用了)
結果後來老師說,還有NoSQL喔!那我們來下載MongoDB吧!
簡直是晴天霹靂,我的Notion筆記已經長到可以用滑鼠滾輪往下滾20下還沒結束🥲
MongoDB…我還去查了正確發音:https://www.youtube.com/watch?v=WyA82fatN6A
真的是令我一頭霧水,特別是跟上週學的關聯式資料庫差異很大。
一開始搞不清楚哪時候該用什麼符號,整個人卡在這些神秘符號裡:
-什麼時候該用 { } 大括號?有時大括號裡又有大括號,到底要包幾個?
-什麼時候用 [ ] 中括號?
-單引號’ ’好多!
-還有$符號,到底…
-還有Add Stage?!?!pipeLine?!?!
-還有讀寫資料(甚至MP3、圖片、影片也可以)
感覺就像打開了一本魔法書,裡面全是咒語,超難懂。(應該說眼睛看懂了,腦子跟不上🥲)

接著我發現MongoDB跟Python也不太一樣,雖然文件的概念有點像Python裡的字典,但MongoDB的查詢語法還多了很多特殊符號跟操作指令。像Python的dict和list好不容易熟悉了,結果看到{ }跟[ ]在MongoDB又變成其他用法(救命)MongoDB還有$gt、$regex、$set…這種符號來下條件,燒腦了。
然後Compass的介面也需要再熟悉,偶爾也要用到shell,於是就這樣在Compass、shell、VS CODE還有我的Notion筆記之間華麗切換✨
MongoDB 常見 $
符號整理
MongoDB 主要用 $
符號在兩大地方:
-查詢條件與更新操作的運算符
-聚合管線 (Aggregation Pipeline) 階段與操作符
1. 查詢與更新常用的 $
運算符

更新操作符

2. 聚合 $
符號
管線階段 (pipeline stages)

聚合表達式 (aggregation expressions)

❓MongoDB Pipeline 是什麼
MongoDB 的 pipeline 就是一串「資料處理步驟」,資料會像流水線一樣,從第一個步驟開始,經過一個接一個的處理,最後吐出你想要的結果。
每個步驟都叫做一個 stage(階段),stage 用 $ 開頭像 $match、$group、$sort 等等。每個階段都會對文件做操作,比如:
-篩選($match)
-分組($group)
-排序($sort)
-拆解陣列($unwind)
然後下一個階段會拿前面處理完的結果繼續處理。(所以stage如果用不到就要刪掉,不然會影響到結果!)
譬如,我想買咖啡,流程是:
-挑豆子(篩選出好豆) → $match
-把豆子磨粉 → $project
-分批包裝(分組統計) → $group
-排隊出貨 → $sort
資料按照一個個stage過關,最後變成我們想要的「乾淨結果」。
一次串接多個操作,不用一個步驟一個步驟慢慢跑,可以做統計、轉換、展開陣列等比較複雜的分析!
總結
- 查詢、過濾、更新常用 $ 運算符
- 聚合管線階段跟表達式都用 $ 開頭
- 陣列操作符特別多,推陣列、拉陣列用 $push、$pull 等
為了避免搞混,我試了這幾招:
- 分清「語言」與「資料結構」的界線
- 把 Python 當作「程式語言」,MongoDB 查詢語法當成「資料庫的查詢語言」。
- 兩者用處不同,並不是完全使用 Python 思維寫 MongoDB 查詢。
2. 用類比幫助理解
- 把 MongoDB 文件想像成「Python 裡的 dict,但更像一份資料清單」。
- 把 $gt 等符號想成資料庫的關鍵字,而不是 Python 裡的函式。
3. 多寫多試,讓手感帶動腦袋
- 把理論放一邊,直接用 pymongo 嘗試增刪查改。
- 遇到不懂的指令,查官方文件、看範例,邊改邊跑。
4. 保持耐心,允許自己「一時混亂」
- 這種思維切換一開始一定會不順,給自己時間慢慢適應。
- 想到小時候連注音符號都認不得時,卻會背弟子規,之後就慢慢能理解意涵了✨
基本差異整理
