整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ
(5)被迫吃芒果的前端工程師 - MongoDB CRUD 之 Read 的 Cursor Methods
前言
意想不到吧? Read 竟然可以多寫一篇,雖然前一篇介紹了常見的 Read 的一些常用運算,但本質上來講我們還會再搭配一些常見的 Cursor Methods,那什麼是 Cursor 呢?讓我們接著認識一下吧。
Cursor Methods
那麼什麼是 Cursor Methods 呢?你可以把 Cursor Methods 理解成後處理的概念,什麼意思呢?例如我搜尋了年齡 25 歲然後狀態 true 的使用者時,正常會輸出 3 個。
但是因為使用了 Cursor Methods 之後去限制成了只輸出一筆,例如其中常見的方法 limit 限制查詢的數量
1 | |
那麼在預設狀況下是會輸出三個,但是因為我們使用了 limit 之後只出現一筆

因此 Cursor Methods 是針對搜尋結果再去做一些迭代處理,接下來也會列一些常見的 Cursor Methods。
limit
limit 剛剛已經有嘗試過了,但還是說明一次。
當我們輸入 db.users.find({ $and: [{ age: { $eq: 25 } }, { status: false }] }) ˇ ˋ時,預期是會輸出三筆資料,但若你想要限制成只輸出結果的一筆時就可以使用 limit
1 | |

sort
sort 非常顧名思義,當我們要做年齡排序時就非常好用,例如從小到大
1 | |

如果要大到小的話就會有一點特別,因為在 MongoDB 則是 -1
1 | |

這邊稍微替 sort 標注一下重點
- 小到大是
1 - 大到小是
-1
count
可能有些人看到 count 會誤以為這可以當作來統計的方法,但實際上來講 count 是拿來回傳 document 數量的,舉例來講我目前資料庫內總共有 14 筆,那透過該方法就會直接回傳 14
1 | |

那麼 count 是可以搭配 Query 一起來查詢數量的,例如我想找年齡 25 的人總共有幾個
1 | |

因此 count 比較像是陣列的 length 概念。
如果想計算類似年齡的方式的話,則必須使用一個叫做 aggregate 的方式
1 | |

skip
skip 簡單來講就是略過的概念,意指你要跳過幾個,例如我要跳到第10個才開始輸出
1 | |

鏈式寫法
Cursor Methods 都可以支援鏈式寫法,什麼是鏈式寫法呢?就跟寫 jQuery 類似。
MongoDB 會從左至右執行結果,舉例來講先跳過五筆,然後限制兩筆資料,最後依據年齡排序大到小
1 | |

整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ