我們在之前都會使用
find()來檢視或查詢資料,但有時候我們會想要針對回傳的結果進行一些處理,例如:排序、數量限制、翻頁效果等,就會使用到今天要介紹的這三個方法:sort()、limit() 及 skip()。
我們可以使用 sort() 對查詢結果進行排序:
db.movie.find().sort({imdb_score: 1})
db.movie.find().sort({imdb_score: 1, duration: 1})
db.movie.find().sort({imdb_score: -1})
我們使用 find() 查詢時回傳結果預設只會回傳前 20 筆資料,需輸入 "it" 進行翻頁才能看到接續的結果:
我們也可以使用 limit() 來設定回傳的資料數量,例如我們想要回傳評分最低的 10 部電影:db.movie.find().sort({imdb_score: 1}).limit(10) 
上面提到使用 find() 查詢時回傳結果預設只會回傳前 20 筆資料,需輸入 "it" 進行翻頁才能看到接續的結果,我們也可以使用 skip() 來直接選擇回傳的頁數。
例如:我們想要查看評分最低的前 3 部電影,可以使用以下指令:db.movie.find().sort({imdb_score: 1}).limit(3) 
但如果想要查看評分第 4 低到第 6 低的電影,則可以使用 limit(3).skip(3) 來省略前 3 筆資料:db.movie.find().sort({imdb_score: 1}).limit(3).skip(3) 
同理,如果想要查看評分第 7 低到第 9 低的電影,則可以使用 limit(3).skip(6) 來省略前 6 筆資料:db.movie.find().sort({imdb_score: 1}).limit(3).skip(6) 
我們使用 find() 查詢資料時回傳的結果是按照原先資料的新增順序:db.movie.find().limit(3) 
我們如果想要對 find() 的結果進行排序,可能會想到使用以下的指令:db.movie.find().limit(3).sort({imdb_score:1}) 
limit(3) 的資料不同,那是因為我們使用 find().limit().sort() 的方法會針對 find() 的所有結果進行排序,而不是針對 limit() 後的結果排序。如果想要對 limit() 後的結果進行排序,則需要使用 聚合 Aggregation 的方法來完成:db.movie.aggregate([{$limit: 3} , {$sort: {imdb_score: 1}}]) 
今天介紹了幾種對 find() 的回傳結果進行操作的方法,下一篇將會介紹關於 update 更新操作的進階方法。