Menu Docs
Página inicial do Docs
/ / /
Driver de Kotlin Sync
/

Especifique documentos a serem devolvidos

Nesta página

  • Visão geral
  • Dados de amostra
  • Limite
  • Sort
  • Ignorar
  • Combinar Limite, Classificar e Ignorar
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como especificar quais documentos retornar de uma operação de leitura usando os seguintes métodos:

  • limit(): especifica o número máximo de documentos para retornar de uma query

  • sort(): 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

Os exemplos neste guia utilizam a coleção do restaurants no banco de dados de dados do sample_restaurants a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .

Os documentos nesta coleção são modelados pela seguinte classe de dados Kotlin :

data class Restaurant(
val name: String,
val borough: String,
val cuisine: String
)

Para especificar o número máximo de documentos retornados de uma operação de leitura, chame o método limit() .

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:

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.limit(5)
results.forEach { result ->
println(result)
}
Restaurant(name=Philadelphia Grille Express, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Isle Of Capri Resturant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Marchis Restaurant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Crystal Room, borough=Staten Island, cuisine=Italian)
Restaurant(name=Forlinis Restaurant, borough=Manhattan, cuisine=Italian)

Dica

O exemplo anterior retorna os cinco primeiros documentos retornados pela query em ordem natural. A seção seguinte descreve como devolver os documentos em uma ordem de classificação especificada.

Para retornar documentos em uma ordem especificada, chame o método sort() . O método sort() utiliza uma direção de classificação como um parâmetro. Para especificar a direção de classificação, use o método Sorts.ascending() ou Sorts.descending() . O método Sorts.ascending() classifica os valores do mais baixo para o mais alto e o método Sorts.descending() classifica os valores do mais alto para o mais baixo. Se você não especificar uma direção de classificação, o sort() retornará os documentos em ordem crescente.

O exemplo a seguir retorna todos os documentos com um valor de campo cuisine de "Italian", classificado pelo valor do campo name em ordem crescente:

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.sort(Sorts.ascending(Restaurant::name.name))
results.forEach { result ->
println(result)
}
Restaurant(name=(Lewis Drug Store) Locanda Vini E Olii, borough=Brooklyn, cuisine=Italian)
Restaurant(name=101 Restaurant And Bar, borough=Brooklyn, cuisine=Italian)
Restaurant(name=44 Sw Ristorante & Bar, borough=Manhattan, cuisine=Italian)
Restaurant(name=900 Park, borough=Bronx, cuisine=Italian)
Restaurant(name=A Voce, borough=Manhattan, cuisine=Italian)
...

Para ignorar um número específico de documentos antes de retornar os resultados da query, chame o método skip() e passe o número de documentos a serem ignorados. O método skip() ignora o número especificado de documentos nos resultados da query e retorna o restante.

O exemplo a seguir retorna todos os documentos que têm um valor de campo cuisine de "Italian" e ignora os primeiros 10 documentos:

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.skip(10)
results.forEach { result ->
println(result)
}
Restaurant(name=San Pietro, borough=Manhattan, cuisine=Italian)
Restaurant(name=Manetta's Ristorante, borough=Queens, cuisine=Italian)
Restaurant(name=Salvi Restaurant, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Tommaso Restaurant, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Da Rosina Restaurant, borough=Manhattan, cuisine=Italian)
...

Você pode combinar os métodos limit(), sort() e skip() em uma única operação. Isso permite que você defina um número máximo de documentos classificados para retornar, ignorando um número específico de documentos antes de retornar.

O exemplo a seguir retorna documentos com o valor de campo cuisine de "Italian". Os resultados são classificados em ordem alfabética, ignorando os primeiros 10 documentos e limitando os resultados a 5 documentos:

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.sort(Sorts.ascending(Restaurant::name.name))
.skip(10)
.limit(5)
results.forEach { result ->
println(result)
}
Restaurant(name=Acqua, borough=Manhattan, cuisine=Italian)
Restaurant(name=Acqua Restaurant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Acqua Santa, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Acquista Trattoria, borough=Queens, cuisine=Italian)
Restaurant(name=Acquolina Catering, borough=Manhattan, cuisine=Italian)

Observação

A ordem em que você chama esses métodos não altera os documentos que são devolvidos. O driver reordena automaticamente as chamadas para executar primeiro as operações de classificação e skip e, em seguida, a operação de limite.

Para mais informações sobre como especificar uma query, consulte Especificar uma Query.

Para obter mais informações sobre como recuperar documentos, consulte Recuperar dados.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Especifique campos para retornar