MongoDB四 之 Limit 選取 Skip 跳過 Sort 排序

來源:互聯網
上載者:User

標籤:imp   python   nbsp   gif   ice   show   王者榮耀   res   play   

在關係型資料庫中的選取(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

 練習題:
import pymongomongo_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)
MongoDB練習

 

 

MongoDB四 之 Limit 選取 Skip 跳過 Sort 排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.