跳过返回结果
概述
使用skip
来省略读取操作返回的文档列表开头的文档。您可以将 skip
与排序 结合使用,以省略给定查询的最高(降序)或最低(升序)结果。由于在没有排序的情况下,返回的文档顺序没有保证,因此在不使用 sort
的情况下使用 skip
将省略任意文档。文档返回顺序 不保证,使用 skip
不使用 sort
将省略任意文档。
如果 skip
的值超过查询匹配的文档数,则该查询返回无文档。
示例文档
要遵循本指南中的示例,请使用以下代码片段将描述水果的文档插入到 myDB.fruits
集合
const myDB = client.db("myDB"); const myColl = myDB.collection("fruits"); await myColl.insertMany([ { "_id": 1, "name": "apples", "qty": 5, "rating": 3 }, { "_id": 2, "name": "bananas", "qty": 7, "rating": 1 }, { "_id": 3, "name": "oranges", "qty": 6, "rating": 2 }, { "_id": 4, "name": "avocados", "qty": 3, "rating": 5 }, ]);
注意
您的查询操作可能返回一个包含匹配文档的游标引用。要了解如何检查游标中存储的数据,请参阅游标基础知识页面。
示例
在下面的示例中,我们使用一个匹配所有文档的过滤器查询集合,并将指定sort
和skip
命令作为查询选项的选项传递。排序选项指定具有更高rating
值的文档在具有较低评分的文档之前返回。skip选项指定从结果中省略前两个文档
// define an empty query document const query = {}; const options = { // sort in descending (-1) order by rating sort : { rating: -1 }, // omit the first two documents skip : 2, } const cursor = myColl.find(query, options); for await (const doc of cursor) { console.dir(doc); }
由于我们指定查询跳过前两个文档,所以上面代码片段打印出第三和第四个评分最高的文档
{ "_id": 3, "name": "oranges", "qty": 6, "rating": 2 } { "_id": 2, "name": "bananas", "qty": 7, "rating": 1 }
sort
和skip
选项也可以作为链接到find
方法的链式方法指定。以下两个命令是等效的
myColl.find(query, { sort: { rating: -1}, skip: 2}); myColl.find(query).sort({rating: -1}).skip(2);