Modificar Resultados da Query
Nesta página
Visão geral
Neste guia, você pode aprender como personalizar a maneira como o Laravel MongoDB retorna resultados de queries. Você pode modificar os resultados de uma operação de localizar encadeando mais métodos para o método where()
.
As seguintes seções demonstram como modificar o comportamento do método where()
:
Ignorar e limitar resultados utiliza o método
skip()
para definir o número de documentos a serem ignorados e o métodotake()
para definir o número total de documentos a serem retornadosClassificar Resultados da Consulta utiliza o método
orderBy()
para retornar resultados da consulta em uma ordem especificada com base nos valores dos campos
Para saber mais sobre os modelos Eloquent na integração com o Laravel, consulte a seção Modelos Eloquent .
Antes de começar
Para executar os exemplos de código neste guia, conclua o tutorial Início Rápido . Este tutorial fornece instruções sobre como configurar uma instância do MongoDB Atlas com dados de amostra e criar os seguintes arquivos em seu aplicativo web Laravel:
Arquivo
Movie.php
, que contém um modeloMovie
para representar documentos na collectionmovies
Arquivo
MovieController.php
, que contém uma funçãoshow()
para executar operações de reconhecimento de data centerArquivo
browse_movies.blade.php
, que contém código HTML para exibir os resultados das operações do banco de dados de dados
As seções a seguir descrevem como editar os arquivos em seu aplicativo Laravel para executar os exemplos de código da operação e visualizar o resultado esperado.
Ignorar e limitar resultados
Este exemplo query documentos nos quais o valor de year
é 1999
. A operação ignora os primeiros 2
documentos correspondentes e gera um total de 3
documentos.
Use a seguinte sintaxe para especificar a query:
$movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get();
Para ver os resultados da query na exibição browse_movies
, edite a função show()
no arquivo MovieController.php
para se assemelhar ao código a seguir:
class MovieController { public function show() { $movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
Title: Three Kings Year: 1999 Runtime: 114 IMDB Rating: 7.2 IMDB Votes: 130677 Plot: In the aftermath of the Persian Gulf War, 4 soldiers set out to steal gold that was stolen from Kuwait, but they discover people who desperately need their help. Title: Toy Story 2 Year: 1999 Runtime: 92 IMDB Rating: 7.9 IMDB Votes: 346655 Plot: When Woody is stolen by a toy collector, Buzz and his friends vow to rescue him, but Woody finds the idea of immortality in a museum tempting. Title: Beowulf Year: 1999 Runtime: 95 IMDB Rating: 4 IMDB Votes: 9296 Plot: A sci-fi update of the famous 6th Century poem. In a besieged land, Beowulf must battle against the hideous creature Grendel and his vengeance seeking mother.
Classificar Resultados da Consulta
Para ordenar resultados da query com base nos valores de campos especificados, utilize o método where()
seguido pelo método orderBy()
.
Você pode definir uma direção de classificação ascendente ou descendente nos resultados. Por padrão, o método orderBy()
define uma classificação ascendente no nome do campo fornecido, mas você pode especificar explicitamente uma classificação ascendente passando "asc"
como segundo parâmetro. Para especificar uma classificação decrescente, passe "desc"
como segundo parâmetro.
Se seus documentos contiverem valores duplicados em um campo específico, você poderá lidar com o empate especificando mais campos para classificar. Isso garante resultados consistentes se os outros campos contiverem valores únicos.
Este exemplo query documentos nos quais o valor do campo countries
contém "Indonesia"
e ordena os resultados primeiro por uma classificação crescente no campo year
e, em seguida, por uma classificação decrescente no campo title
.
Use a seguinte sintaxe para especificar a query:
$movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get();
Para ver os resultados da query na exibição browse_movies
, edite a função show()
no arquivo MovieController.php
para se assemelhar ao código a seguir:
class MovieController { public function show() { $movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
Title: Joni's Promise Year: 2005 Runtime: 83 IMDB Rating: 7.6 IMDB Votes: 702 Plot: A film delivery man promises ... Title: Gie Year: 2005 Runtime: 147 IMDB Rating: 7.5 IMDB Votes: 470 Plot: Soe Hok Gie is an activist who lived in the sixties ... Title: Requiem from Java Year: 2006 Runtime: 120 IMDB Rating: 6.6 IMDB Votes: 316 Plot: Setyo (Martinus Miroto) and Siti (Artika Sari Dewi) are young married couple ... ...
Dica
Para saber mais sobre classificação, consulte os seguintes recursos:
Ordem natural no glossário manual do servidor MongoDB
Ordem, agrupamento, limite e deslocamento na documentação do Laravel
Informações adicionais
Para ver exemplos de código executável que demonstram como realizar operações de localização usando a integração com o Laravel, consulte os seguintes exemplos de uso:
Para saber como recuperar dados com base em critérios de filtro, consulte o guia Recuperar dados.