MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/ /
Ler dados do MongoDB

Especifique documentos a serem devolvidos

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 restaurants coleção do sample_restaurants no banco de dados do a partir do conjunto de dados de amostra do Atlas . Para saber como criar um sistema gratuito do MongoDB e carregar os conjuntos de dados de exemplo, consulte o guia de introdução ao MongoDB .

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 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

Nesta página