跳过返回的结果
Overview
使用 skip
可以省略读取操作返回的文档列表开头的文档。 您可以将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
命令作为查询选项的选项。sort 选项指定具有较高 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); }
由于我们指定该查询跳过前2
个文档,因此上面的代码段将打印评分第三和第四高的文档:
{ "_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);