在關系型數據庫中的選取(limit),排序(sort) MongoDB中同樣有,而且使用起來更是簡單
首先我們看下添加幾條Document進來
現在有四條Document 根據它們, 對 Limit Skip Sort 分別展開學習
1. Limit 選取
從這些 Document 中取出多少個
做個小例子 : 我只要 2 條 Document
結果是很明顯的
但是我還是要解釋一下 : limit(2) 就是選取兩條Document, 從整個Collection的第一條 Document 開始選取兩條
如果我們不想從第一條Document開始選取,怎么辦呢?
2.Skip 跳過
我要跳過多少個Document
做個小例子 : 我要跳過前兩個 Document 直接從第三個Document 開始
結果還是很明顯
按照國際慣例解釋一下 : skip(2) 就是跳過兩條Document, 從整個Collection 的第一條 Document 開始跳,往后跳兩條
另一個例子 : 跳過第一條 直接從 第二條 開始
問題來了,我只想要第二條和第三條怎么處理呢?
3.Limit + Skip
從這兒到那兒 的 選取
就是剛才的問題,一個小例子 : 我只想要第二條和第三條怎么處理呢
國際慣例 : 跳過第一條Document 從第二條開始選取兩條 Document
另一種寫法:
兩種寫法完全得到的結果完全一樣但是國際慣例的解釋卻不同
國際慣例 : 選取兩條Document 但是要 跳過 第一條Document 從 第二條 開始 選取
這兩種寫法二選一即可
4. Sort 排序
將結果按照關鍵字排序
做個小例子 : 將find出來的Document 按照 price 進行 升序 | 降序 排列
國際慣例 : 按照 price 字段進行升序 , 1 為升序 , -1 為降序
5. Limit + Skip + Sort 混搭
一個例子 : 選取第二條第三條 並 按照 price 進行 升序排列
問題出現了, 按道理不應該是 9800 然后 19800 嗎?
注意 : Sort + Skip + Limit 是有執行優先級的 他們的界別分別是 優先 Sort 其次 Skip 最后 Limt
Skip + Limit 的優先級 也是先 Skip 再 Limit
pymongo 練習題:

import pymongo mongo_client = pymongo.MongoClient('127.0.0.1:27017') db = mongo_client['gxy'] STUDENT_LIST = [ {"username": "小黑", "age": 20, "gender": "男", "hobby": ["女孩", "王者榮耀"], "course": [{"name": "Python", "scour": 60}, {"name": "JavaScript", "scour": 59}]}, {"username": "小白", "age": 21, "gender": "女", "hobby": ["男孩", "王者榮耀"], "course": [{"name": "Python", "scour": 80}, {"name": "JavaScript", "scour": 99}]} ] # 小黑改為小帥帥 + 小白改為小漂漂 # db.python.update({'username':'小黑'},{'$set':{'username':'小帥帥'}}) # db.python.update({'username':'小白'},{'$set':{'username':'小漂漂'}}) # 小帥帥,小漂漂,原有年齡+5歲 # db.python.update_one({'username':'小帥帥'},{'$inc':{'age':5}}) # db.python.update_one({'username':'小漂漂'},{'$inc':{'age':5}}) # 小帥帥的hobby + 吃雞 # db.python.update_one({'username':'小帥帥'},{'$push':{'hobby':'吃雞'}}) # 小漂漂的hobby + 奇跡暖暖 # db.python.update_one({'username':'小漂漂'},{'$push':{'hobby':'奇跡暖暖'}}) # 小帥帥和小漂漂 加入學科HTML 分數為 70 # db.python.update({'username':'小帥帥'},{'$push':{'course':{'name':'html','scour':70}}}) # db.python.update({'username':'小漂漂'},{'$push':{'course':{'name':'html','scour':70}}}) # 查詢愛好"女孩"的學生性別 # ret= db.python.find_one({'hobby':'女孩'})['gender'] # print(ret) # 查詢愛好"奇跡暖暖"的學生名稱 # ret = db.python.find_one({'hobby':'女孩'})['username'] # print(ret) # 小帥帥和小漂漂 誰有60分以下的課程 ret = db.python.find_one({'course':[{'scour':60}]}) print(ret) # 小帥帥和小漂漂 誰有80分以上的課程 # 小帥帥和小漂漂 誰有60分以下的課程 並顯示課程名 分數 姓名 # 小帥帥和小漂漂 誰有80分以上的課程 並顯示課程名 分數 姓名 # 學科中加入comment : "優秀" ( <60 : 不及格, >=60 <80: 中 , >=80 <90: 良 , >=90 優) # db.python.remove({}) # db.python.insert(STUDENT_LIST) res = db.python.find() for i in res: print(i)