保留最前面的结果
本课属于 Coddy Node.js 学习旅程的“使用 MongoDB 的数据库”单元。第 12 课,共 29 课。
只显示最新两本书的页面只需要前两个结果。游标有一个 limit 方法可以实现这一点。limit 的值是文档数量,而不是字段值。
await books.find().sort({year: 1}).limit(1).toArray();
// [Emma],最早出版的书对于 find 游标,无论你以什么顺序链式调用这些方法,MongoDB 都会先排序再限制结果数量。先写 sort,这样代码的阅读顺序更清晰。即使 limit 为 1,返回的仍然是数组。如果匹配的文档数量少于限制数量,数据库就会返回现有的文档。不会添加空占位项。
查询值是文本:Number(input.page) || 1 使用它的数值;如果它缺失,则使用 1。本练习接受正整数。
挑战
简单保留提供的按最新优先排序。使用查询字符串中的 input.n 限制结果数量;如果未提供,则使用 2。原样返回文档。
试试“运行”:GET /result?n=2 会依次返回 Kindred 和 Dune。使用 ?n=1 时,只会保留 Kindred。没有 n 时,默认返回两个结果。输入必须是正整数。
亲手试试
export async function exercise(books, input) {
return await books.find().sort({ year: -1 }).toArray();
}
使用 MongoDB 的数据库中的所有课
自己练习: Express 在线编辑器