Docs Menu
Docs Home
/ /

Retrieve Data

En esta guía, aprenderá a recuperar datos de colecciones de MongoDB mediante Laravel MongoDB. Describe los métodos del modelo Eloquent que puede usar para recuperar datos y proporciona ejemplos de diferentes tipos de operaciones de búsqueda.

Para obtener más información sobre los modelos Eloquent en la integración de Laravel, consulte SecciónModelos Elocuentes.

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.php archivo, que contiene un modelo Movie para representar documentos en la colección movies

  • MovieController.php archivo, que contiene una función show() para ejecutar operaciones de base de datos

  • browse_movies.blade.php archivo, 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.

Puede utilizar el mapeador relacional de objetos Eloquent (ORM) de Laravel para crear modelos que representen colecciones de MongoDB y encadenar métodos en ellos para especificar criterios de consulta.

Para recuperar documentos que coincidan con un conjunto de criterios, llame al método where() en el modelo Eloquent correspondiente de la colección y luego pase un filtro de consulta al método.

Tip

Retrieve One Document

El método where() recupera todos los documentos coincidentes. Para recuperar el primer documento coincidente, puede encadenar el método first(). Para obtener más información y ver un ejemplo, consulte Recupere la sección Primer Resultado de esta guía.

Un filtro de consulta especifica los requisitos de valores de campo e indica a la operación de búsqueda que devuelva únicamente los documentos que cumplan con estos requisitos.

Puede utilizar una de las siguientes llamadas al método where() para crear una consulta:

  • where('<field name>', <value>) crea una consulta que coincide con los documentos en los que el campo de destino tiene el valor exacto especificado

  • where('<field name>', '<comparison operator>', <value>) crea una consulta que coincide con los documentos en los que el valor del campo de destino cumple con los criterios de comparación

Para aplicar múltiples conjuntos de criterios a la operación de búsqueda, se puede encadenar una serie de métodos where() juntos.

Después de crear su consulta utilizando el método where(), encadene el método get() para recuperar los resultados de la consulta.

Este ejemplo llama a dos métodos where() en el modelo Eloquent Movie para recuperar documentos que cumplen los siguientes criterios:

  • year El campo tiene un valor de 2010

  • imdb.rating El campo anidado tiene un valor mayor que 8.5

Utilice la siguiente sintaxis para especificar la consulta:

$movies = Movie::where('year', 2010)
->where('imdb.rating', '>', 8.5)
->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', 2010)
->where('imdb.rating', '>', 8.5)
->get();
return view('browse_movies', [
'movies' => $movies
]);
}
}
Title: Inception
Year: 2010
Runtime: 148
IMDB Rating: 8.8
IMDB Votes: 1294646
Plot: A thief who steals corporate secrets through use of dream-sharing
technology is given the inverse task of planting an idea into the mind of a CEO.
Title: Senna
Year: 2010
Runtime: 106
IMDB Rating: 8.6
IMDB Votes: 41904
Plot: A documentary on Brazilian Formula One racing driver Ayrton Senna, who won the
F1 world championship three times before his death at age 34.

Para aprender a usar el generador de query de Laravel en lugar del ORM Eloquent, consulta la página de Generador de query.

Puedes especificar un filtro de query para hacer coincidir elementos de campos de arreglo al recuperar documentos. Si tus documentos contienen un campo de arreglo, puedes hacer coincidir documentos dependiendo de si el valor contiene todos o algunos de los elementos de arreglo especificados.

Puede utilizar una de las siguientes llamadas al método where() para crear una consulta en un campo de matriz:

  • where('<array field>', <array>) Crea una consulta que coincide con los documentos en los que el valor del campo de la matriz es exactamente el de la matriz especificada.

  • where('<array field>', 'in', <array>) crea una consulta que coincide con los documentos en los que el valor del campo de matriz contiene uno o más de los elementos de matriz especificados

Después de crear su consulta utilizando el método where(), encadene el método get() para recuperar los resultados de la consulta.

Seleccione entre las siguientes opciones Exact Array Match y Element Match pestañas para ver la sintaxis de consulta para cada patrón:

Este ejemplo recupera documentos en los que la matriz countries es exactamente ['Indonesia', 'Canada']:

$movies = Movie::where('countries', ['Indonesia', 'Canada'])
->get();

Este ejemplo recupera documentos en los que la matriz countries contiene uno de los valores de la matriz ['Canada', 'Egypt']:

$movies = Movie::where('countries', 'in', ['Canada', 'Egypt'])
->get();

Para aprender a consultar campos de matriz utilizando el generador de consultas de Laravel en lugar del ORM de Eloquent, consulte la sección Ejemplo de coincidencia de elementos de matriz en la guía del generador de consultas.

Para recuperar el primer documento que coincida con un conjunto de criterios, utilice el método where() seguido del método first().

Encadene el método orderBy() a first() para obtener resultados consistentes al consultar un valor único. Si omite el método orderBy(), MongoDB devuelve los documentos coincidentes según su orden natural o como aparecen en la colección.

Este ejemplo realiza una consulta de documentos en los que el valor del campo runtime es 30 y devuelve el primer documento coincidente según el valor del campo _id.

Utilice la siguiente sintaxis para especificar la consulta:

$movie = Movie::where('runtime', 30)
->orderBy('_id')
->first();

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()
{
$movie = Movie::where('runtime', 30)
->orderBy('_id')
->first();
return view('browse_movies', [
'movies' => $movie
]);
}
}
Title: Statues also Die
Year: 1953
Runtime: 30
IMDB Rating: 7.6
IMDB Votes: 620
Plot: A documentary of black art.

Tip

Para obtener más información sobre el orderBy() método, consulte la sección Ordenar resultados de consulta de la guía Modificar resultados de consulta.

Puede recuperar todos los documentos de una colección omitiendo el filtro de consulta. Para obtener los documentos, llame al método get() en un modelo de Eloquent que represente su colección. Como alternativa, puede usar el alias all() del método get() para realizar la misma operación.

Utilice la siguiente sintaxis para ejecutar una operación de búsqueda que coincida con todos los documentos:

$movies = Movie::get();

Advertencia

La colección movies del conjunto de datos de muestra Atlas contiene una gran cantidad de datos. Recuperar y mostrar todos los documentos de esta colección podría provocar que se agote el tiempo de espera de la aplicación web.

Para evitar este problema, especifique un límite de documentos mediante el take() método. Para obtener más información sobre, consulte la sección take() "Modificar resultados de consulta" de la guía "Modificar la salida de consulta".

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 insertar datos en MongoDB, consulte la guía Operaciones de escritura.

Para aprender cómo modificar la forma en que la integración de Laravel devuelve resultados, consulte la guía Modificar resultados de consulta.

Volver

Operaciones de lectura

En esta página