Menu
CoddyTech

Mantendo os primeiros resultados

Parte da seção Bancos de dados com MongoDB do Journey de Node.js da Coddy. Lição 12 de 29.

Uma página que mostra os dois livros mais recentes precisa apenas dos dois primeiros resultados. Um cursor tem um método limit para isso. O limite é um número de documentos, não um valor de campo.

await books.find().sort({year: 1}).limit(1).toArray();
// [Emma], o livro mais antigo

Em um cursor de find, o MongoDB ordena antes de limitar, independentemente da ordem em que você encadeie as chamadas. Escreva sort primeiro para que o código seja lido nessa ordem. Ainda é retornado um array quando o limite é 1. Se menos documentos corresponderem do que o limite, o banco de dados retornará os documentos disponíveis. Nenhum espaço reservado vazio é adicionado.

Um valor de consulta é texto: Number(input.page) || 1 usa o número correspondente ou 1 quando ele está ausente. Essa prática aceita números inteiros positivos.

challenge icon

Desafio

Fácil

Mantenha a ordenação fornecida, da mais recente para a mais antiga. Limite os resultados usando input.n da string de consulta; use 2 quando ele estiver ausente. Retorne os documentos sem alterações.

Teste clicando em “Jogar”: GET /result?n=2 retorna Kindred e depois Dune. Com ?n=1, apenas Kindred permanece. Sem n, o padrão são dois resultados. As entradas são números inteiros positivos.

Experimente você mesmo

export async function exercise(books, input) {
    return await books.find().sort({ year: -1 }).toArray();
}

Todas as lições de Bancos de dados com MongoDB

Pratique por conta própria: Playground de Express