Visão geral
Neste guia, você pode aprender a especificar quais documentos retornar de uma operação de leitura encadeando os seguintes métodos ao método find:
limite: especifica o número máximo de documentos para retornar de uma consulta
classificar: especifica a ordem de classificação para os documentos devolvidos
skip: especifica o número de documentos a ignorar antes de retornar os resultados da query
Dados de amostra
O exemplo neste guia usa a coleção movies no banco de dados sample_mflix dos conjuntos de dados de amostra do Atlas. Para aprender a criar um cluster do MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Introdução ao Atlas.
Limite
Para especificar o número máximo de documentos retornados de uma operação de leitura, aplique a opção limit à operação. Você pode definir essa opção encadeando o método limit ao método find.
O exemplo a seguir encontra todos os restaurantes que têm um cuisine valor de campo de 'Italian' e limita os resultados a 5 documentos:
let mut cursor = my_coll .find(doc! { "cuisine": "Italian" }) .limit(5) .await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Restaurant { name: "V & T Restaurant", cuisine: "Italian" } Restaurant { name: "Gargiulo'S Restaurant", cuisine: "Italian" } Restaurant { name: "Patsy'S Italian Restaurant", cuisine: "Italian" } Restaurant { name: "John'S Restaurant", cuisine: "Italian" } Restaurant { name: "Ferdinando'S Restaurant", cuisine: "Italian" }
Dica
O exemplo anterior retorna os cinco primeiros documentos correspondidos pela query de acordo com sua ordem natural no banco de banco de dados. A seção a seguir descreve como devolver os documentos em uma ordem especificada.
Sort
Para retornar documentos em uma ordem especificada, aplique a opção sort à operação de leitura. Você pode definir essa opção encadeando o método de preparação sort ao método find.
Ao chamar sort, passe o campo para classificar os resultados e a direção de classificação. Um valor de direção de classificação de 1 classifica os valores do mais baixo para o mais alto, e um valor de -1 os classifica do mais alto para o mais baixo. Se você não especificar uma classificação, o MongoDB não garante a ordem dos resultados da query.
O exemplo a seguir retorna todos os documentos que têm um valor de campo cuisine de 'Italian', classificados em ordem crescente de valores de campo name:
let mut cursor = my_coll .find(doc! { "cuisine": "Italian" }) .sort(doc! { "name": 1 }) .await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Restaurant { name: "Antonio'S Trattoria", cuisine: "Italian" } Restaurant { name: "Antonioni'S", cuisine: "Italian" } Restaurant { name: "Antonucci", cuisine: "Italian" } ... Restaurant { name: "Zucchero E Pomodori", cuisine: "Italian" }
Ignorar
Para ignorar um número especificado de documentos antes de retornar os resultados da query, aplique a opção skip à operação de leitura. Você pode definir essa opção encadeando o método de preparação skip ao método find.
O exemplo a seguir retorna todos os documentos que têm um valor de campo borough de 'Manhattan' e ignora os primeiros 10 documentos:
let mut cursor = my_coll .find(doc! { "borough": "Manhattan" }) .skip(10) .await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Restaurant { name: "Beyond Thai Kitchen", cuisine: "Thai" } Restaurant { name: "Rainbow Room", cuisine: "American" } ... Restaurant { name: "Fairfield Inn Suites Penn Station", cuisine: "Other" }
Combinar Limite, Classificar e Ignorar
Você pode encadear os métodos limit, sort e skip a uma única chamada de método find. Isso permite que você defina um número máximo de documentos classificados para retornar da operação de leitura, ignorando um número específico de documentos antes de retornar.
O exemplo a seguir retorna 5 documentos com um valor cuisine de 'Italian'. Os resultados são classificados em ordem crescente pelo valor do campo name, ignorando os primeiros 10 documentos:
let mut cursor = my_coll .find(doc! { "cuisine": "Italian" }) .sort(doc! { "name": 1 }) .skip(10) .limit(5) .await?; while let Some(result) = cursor.try_next().await? { println!("{:?}", result); }
Restaurant { name: "Acqua", cuisine: "Italian" } Restaurant { name: "Acqua Restaurant", cuisine: "Italian" } Restaurant { name: "Acqua Santa", cuisine: "Italian" } Restaurant { name: "Acquista Trattoria", cuisine: "Italian" } Restaurant { name: "Acquolina Catering", cuisine: "Italian" }
Observação
A ordem em que você chama esses métodos não altera os documentos que são devolvidos. O servidor reordena automaticamente as chamadas para executar primeiro a operação de classificação, a operação de ignorar em seguida e, em seguida, a operação de limite.
Informações adicionais
Para obter mais informações sobre como recuperar documentos, consulte o guia Localizar documentos.
Para obter mais informações sobre como especificar uma query, consulte o guia Especificar uma query .
Documentação da API
Para saber mais sobre o find método e suas opções, consulte a documentação da API.