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 muestran 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, consulta la SecciónModelos Elocuentes.
Antes de empezar
Para ejecutar los ejemplos de código en esta guía, completa el tutorial de Inicio Rápido. Este tutorial proporciona instrucciones para configurar una instancia de MongoDB Atlas con datos de muestra y crear los siguientes archivos en su aplicación web 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 de tu aplicación Laravel para ejecutar los ejemplos de código de operaciones de búsqueda y ver la salida esperada.
Omitir y Limitar Resultados
Este ejemplo query documentos en los que el valor de year es 1999. La operación omite los primeros 2 documentos coincidentes y arroja un total de 3 documentos.
Utilice la siguiente sintaxis para especificar la query:
$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 query en función de los valores de los campos especificados, utiliza el método where() seguido del método orderBy().
Puedes establecer una dirección de ordenamiento ascendente o descendente en los resultados. Por defecto, el método orderBy() establece un orden ascendente en el nombre de campo proporcionado, pero también puedes especificar explícitamente un orden ascendente pasando "asc" como segundo parámetro. Para especificar un orden descendente, pasa "desc" como segundo parámetro.
Si tus documentos contienen valores duplicados en un campo específico, puedes gestionar el empate especificando más campos en los que ordenar. Esto garantiza resultados coherentes si los demás campos contienen valores únicos.
En este ejemplo, se consultan documentos en los que el valor del campo countries contiene "Indonesia" y los resultados se ordenan primero por una ordenación ascendente en el campo year, y luego por una ordenación descendente en el campo title.
Utilice la siguiente sintaxis para especificar la query:
$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 en función de criterios de filtro, consulta la guía Recuperar datos.