Overview
En esta guía, aprenderá a personalizar la forma en que Laravel MongoDB devuelve los resultados de las consultas. Puede modificar los resultados de una operación de búsqueda encadenando más métodos a la consulta. where() .
Las siguientes secciones demuestran cómo modificar el comportamiento del método where():
Skip and Limit Results utiliza el
skip()método para establecer la cantidad de documentos a omitir y eltake()método para establecer la cantidad total de documentos a devolverOrdenar resultados de la query utiliza el método
orderBy()para devolver resultados de query en un orden específico según los valores del campo
Para obtener más información sobre los modelos Eloquent en la integración de Laravel, consulte SecciónModelos Elocuentes.
Antes de empezar
Para ejecutar los ejemplos de código de esta guía, complete el tutorial de inicio rápido. Este tutorial proporciona instrucciones para configurar una instancia de MongoDB Atlas con datos de ejemplo y crear los siguientes archivos en su aplicación web de Laravel:
Movie.phparchivo, que contiene un modeloMoviepara representar documentos en la colecciónmoviesMovieController.phparchivo, que contiene una funciónshow()para ejecutar operaciones de base de datosbrowse_movies.blade.phparchivo, que contiene código HTML para mostrar los resultados de las operaciones de la base de datos
Las siguientes secciones describen cómo editar los archivos en su aplicación Laravel para ejecutar los ejemplos de código de la operación de búsqueda y ver el resultado esperado.
Omitir y limitar resultados
Este ejemplo busca documentos cuyo valor year sea 1999. La operación omite los primeros 2 documentos coincidentes y genera un total de 3 documentos.
Utilice la siguiente sintaxis para especificar la consulta:
$movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get();
Para ver los resultados de la query en la vista browse_movies, edita la función show() en el archivo MovieController.php para que se asemeje al siguiente código:
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.
Ordene los resultados del query
Para ordenar los resultados de la consulta según los valores de los campos especificados, utilice el método where() seguido del método orderBy().
Puede establecer una ordenación ascendente o descendente de los resultados. De forma predeterminada, el orderBy() método establece una ordenación ascendente según el nombre del campo proporcionado, pero puede especificarla explícitamente pasando "asc" como segundo parámetro. Para especificar una ordenación descendente, pase "desc" como segundo parámetro.
Si sus documentos contienen valores duplicados en un campo específico, puede solucionar el problema especificando más campos para ordenar. Esto garantiza resultados consistentes si los demás campos contienen valores únicos.
Este ejemplo consulta documentos en los que el valor del campo countries contiene "Indonesia" y ordena los resultados primero mediante un ordenamiento ascendente en el campo year y luego mediante un ordenamiento descendente en el campo title.
Utilice la siguiente sintaxis para especificar la consulta:
$movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get();
Para ver los resultados de la query en la vista browse_movies, edita la función show() en el archivo MovieController.php para que se asemeje al siguiente código:
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 ... ...
Tip
Para aprender más sobre clasificación, consulta los siguientes recursos:
Orden natural en el glosario del manual del servidor
Ordenamiento, agrupación, límite y desplazamiento en la documentación de Laravel
Información Adicional
Para ver ejemplos de código ejecutables que demuestran cómo realizar operaciones de búsqueda mediante la integración de Laravel, consulte los siguientes ejemplos de uso:
Para aprender cómo recuperar datos según criterios de filtro, consulte la guía Recuperar datos.