在mongo中最常用的查詢選項就是限制返回結果的數量,忽略一定數量的結果並排序.所有這些選項一定要在查詢被派發到伺服器之前添加.在這裡需要用到的就是limit,skip,sort這三個函數了.這三個函數都可以達到限制返回結果數量的目的,但是他們之間還有區別. 1.limit
要限制結果數量,可以在find後使用limit函數.這個函數類似分頁的每頁多少條資料,例如,如果每頁是2條資料,如果匹配的結果達不到2條,則返回匹配結果的數量,如果匹配結果大於2條,則返回2條.
limit-取這個表的前兩條資料db.getCollection('activity').find({}).limit(2)
2.skip
skip和limit最大的區別就是skip是從滿足匹配條件的略過符合表資料的前*條資料,顯示資料.例如,共四條滿足匹配條件,則顯示後兩條資料.
skip-取這個表的後兩條資料db.getCollection('activity').find({}).skip(2)
3.sort
sort用一個對象作為參數:一對鍵/值對,鍵對應文檔的鍵名,值代表排序的方向.排序方向可以是1(升序),-1(降序),如果指定了多個鍵,則按照多個鍵的順序進行排序.
例如:按照activityCode這個欄位進行升序排序,就可以這樣寫:
db.getCollection('activity').find({}).sort({activityCode:1})
三個函數組合使用
這三個函數可以組合使用,對於分頁非常有用.例如:某商家想要查詢activity這個表,並且按照activityCode按照升序排序,就可以使用下面的查詢語句.
db.getCollection('activity').find({}).limit(2).sort({activityCode:1})(未添加了查詢條件的)
如果某商家想要查詢activityType為1,並且按照 activityCode按照升序排序,就可以使用下面的查詢語句.
db.getCollection('activity').find({"activityType":0}).limit(2).sort({activityCode:1})(添加了查詢條件的)
三者一塊組合,可以理解為每頁2條資料,點擊"下一頁"可以看到更多的結果,通過skip可以非常簡單的實現,只需要略過前2個即可(已經在第一頁顯示了).
db.getCollection('activity').find({"activityType":0}).limit(2).skip(1).sort({activityCode:1})
如果skip的數量過多,可能會導致效能的問題,不建議這麼使用.這樣就體現不到mongo的優點了. 總結: 這三個函數各有各自的用處,limit可以理解為用於分頁中第一頁顯示的條數,skip可以理解為"下一頁"顯示的條數,sort可以理解為分頁中按照哪個欄位來進行排序.