Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Retrieve MongoDB Data

En esta guía, puedes aprender cómo recuperar datos de colecciones de MongoDB usando Laravel MongoDB. Esta guía describe los métodos de modelos Eloquent que puedes 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 la sección Modelar sus datos.

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.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 de tu aplicación Laravel para ejecutar los ejemplos de código de operaciones de búsqueda y ver la salida esperada.

Puedes utilizar el mapeador objeto-relacional (ORM) Eloquent de Laravel para crear modelos que representen las colecciones MongoDB y encadenar métodos sobre ellos para especificar criterios de query.

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

Tip

Retrieve One Document

El método where() recupera todos los documentos coincidentes. Para recuperar el primer documento que coincida, puedes encadenar el método first(). Para obtener más información y ver un ejemplo, consulta la sección Recupera el primer resultado de esta guía.

Un filtro de query especifica los requisitos de valor de campo e instruye a la operación de búsqueda para que devuelva solo los documentos que cumplan con estos requisitos.

Puede usar una de las siguientes where() llamadas de método para compilar una query:

  • where('<field name>', <value>) compila una query que coincida con documentos en los que el campo objetivo tenga el valor exacto especificado

  • where('<field name>', '<comparison operator>', <value>) compila una query que coincida con documentos en los que el valor del campo objetivo cumpla 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 tu query utilizando el método where(), encadena el método get() para recuperar los resultados de la query.

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

  • year el campo tiene un valor de 2010

  • imdb.rating el campo anidado tiene un valor superior a 8.5

Utilice la siguiente sintaxis para especificar la query:

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

Puedes utilizar una de las siguientes llamadas al método where() para compilar una query en un campo de arreglo:

  • where('<array field>', <array>) compila una query que coincide con los documentos en los que el valor del campo de arreglo es exactamente el arreglo especificado

  • where('<array field>', 'in', <array>) construye una consulta que coincide con 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 tu query utilizando el método where(), encadena el método get() para recuperar los resultados de la query.

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

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

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

Este ejemplo recupera documentos en los que el arreglo countries contiene uno de los valores del arreglo ['Canada', 'Egypt']:

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

Aprende a consultar campos de arreglos usando el query builder de Laravel en lugar del ORM Eloquent, consulta la sección Ejemplo de coincidencia de elementos de arreglo en la guía del query builder.

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

Encadena el método orderBy() a first() para obtener resultados consistentes cuando consultes query sobre un valor único. Si omites el método orderBy(), MongoDB devuelve los documentos coincidentes según el orden natural de los documentos 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 query:

$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 método orderBy(), consulta la sección Ordenar resultados de query de la guía Modificar resultados de query.

Puedes recuperar todos los documentos de una colección omitiendo el filtro de query. Para devolver los documentos, llama al método get() en un modelo Eloquent que represente tu colección. De manera alternativa, puedes emplear el alias all() del método get() para llevar a cabo la misma operación.

Utiliza 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 en el 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 tu aplicación web se quede sin tiempo.

Para evitar este problema, especifica un límite de documentos utilizando el método take(). Para obtener más información sobre take(), consulta la sección Modificar los resultados de las consultas de la guía Modificar salida de la consulta.

Las siguientes secciones proporcionan ejemplos de código totalmente ejecutables que demuestran cómo recuperar documentos mediante la integración de Laravel. Estos ejemplos utilizan la colección sample_mflix.movies de los conjuntos de datos de muestra de Atlas.

Tip

Puedes ejecutar los ejemplos completos desde tu propia aplicación Laravel o desde la aplicación my-app creada en el tutorial Introducción. Los ejemplos utilizan la clase de modelo Movie.php creada en este tutorial para demostrar operaciones en la colección de MongoDB movies. Para ejecutar la operación, puedes copiar el código de muestra en un endpoint del controlador en tu aplicación Laravel.

Para ver la salida esperada de la operación, puedes agregar una ruta web a tu aplicación que llame a la función controladora y devuelva el resultado a una interfaz web.

Seleccione de las siguientes pestañas Eloquent y Query Builder para ver ejemplos de cada sintaxis de query correspondiente:

Este ejemplo realiza las siguientes acciones:

  • Utiliza el modelo Movie Eloquent para representar la colección movies en la base de datos sample_mflix

  • Recupera un documento de la colección movies que coincida con un filtro de query

  • Imprime el documento recuperado

El ejemplo llama a los siguientes métodos en el modelo Movie:

  • where(): Coincide con documentos en los que el valor del campo directors incluye "Rob Reiner"

  • orderBy(): Ordena los documentos coincidentes por sus valores de _id ascendentes

  • first(): Recupera solo el primer documento coincidente

$movie = Movie::where('directors', 'Rob Reiner')
->orderBy('id')
->first();
echo $movie->toJson();
// Result is truncated
{
"_id": ...,
"title": "This Is Spinal Tap",
"directors": [ "Rob Reiner" ],
...
}

Este ejemplo realiza las siguientes acciones:

  • Accede a la colección movies llamando al método table() desde la fachada DB

  • Recupera un documento de la colección movies que coincida con un filtro de query

  • Imprime el campo title del documento recuperado

El ejemplo llama a los siguientes métodos para crear query:

  • where(): Coincide con documentos en los que el valor del campo directors incluye "Rob Reiner"

  • orderBy(): Ordena los documentos coincidentes por sus valores de _id ascendentes

  • first(): Recupera solo el primer documento coincidente

$movie = DB::table('movies')
->where('directors', 'Rob Reiner')
->orderBy('_id')
->first();
echo $movie->title;
This Is Spinal Tap

Seleccione de las siguientes pestañas Eloquent y Query Builder para ver ejemplos de cada sintaxis de query correspondiente:

Este ejemplo realiza las siguientes acciones:

  • Utiliza el modelo Movie Eloquent para representar la colección movies en la base de datos sample_mflix

  • Recupera e imprime documentos de la colección movies que coinciden con un filtro de query

El ejemplo llama a los siguientes métodos en el modelo Movie:

  • where(): coincide con documentos en los que el valor del campo runtime es mayor que 900

  • orderBy(): Ordena los documentos coincidentes por sus valores de _id ascendentes

  • get()Recupera los resultados de la query como un objeto de colección Laravel

$movies = Movie::where('runtime', '>', 900)
->orderBy('id')
->get();
// Results are truncated
[
{
"_id": ...,
"runtime": 1256,
"title": "Centennial",
...,
},
{
"_id": ...,
"runtime": 1140,
"title": "Baseball",
...,
},
...
]

Este ejemplo realiza las siguientes acciones:

  • Accede a la colección movies llamando al método table() desde la fachada DB

  • Recupera e imprime documentos de la colección movies que coinciden con un filtro de query

El ejemplo llama a los siguientes métodos para crear query:

  • where(): coincide con documentos en los que el valor del campo runtime es mayor que 900

  • orderBy(): Ordena los documentos coincidentes por sus valores de _id ascendentes

  • get()Recupera los resultados de la query como un objeto de colección Laravel

$movies = DB::table('movies')
->where('runtime', '>', 900)
->orderBy('_id')
->get();
// Results are truncated
[
{
"_id": ...,
"runtime": 1256,
"title": "Centennial",
...,
},
{
"_id": ...,
"runtime": 1140,
"title": "Baseball",
...,
},
...
]

Seleccione de las siguientes pestañas Eloquent y Query Builder para ver ejemplos de cada sintaxis de query correspondiente:

Este ejemplo realiza las siguientes acciones:

  • Utiliza el modelo Movie Eloquent para representar la colección movies en la base de datos sample_mflix

  • Cuenta los documentos de la colección movies que coinciden con un filtro de query

  • Imprime el recuento de documentos coincidentes

El ejemplo llama a los siguientes métodos en el modelo Movie:

  • where(): Coincide con documentos en los que el valor del campo genres incluye "Biography"

  • count(): Cuenta el número de documentos coincidentes y devuelve el conteo como un número entero

$count = Movie::where('genres', 'Biography')
->count();
echo 'Number of documents: ' . $count;
Number of documents: 1267

Este ejemplo realiza las siguientes acciones:

  • Accede a la colección movies llamando al método table() desde la fachada DB

  • Cuenta los documentos de la colección movies que coinciden con un filtro de query

  • Imprime el recuento de documentos coincidentes

El ejemplo llama a los siguientes métodos para crear query:

  • where(): Coincide con documentos en los que el valor del campo genres incluye "Biography"

  • count(): Cuenta el número de documentos coincidentes y devuelve el conteo como un número entero

$count = DB::table('movies')
->where('genres', 'Biography')
->count();
echo 'Number of documents: ' . $count;
Number of documents: 1267

Seleccione de las siguientes pestañas Eloquent y Query Builder para ver ejemplos de cada sintaxis de query correspondiente:

Este ejemplo realiza las siguientes acciones:

  • Utiliza el modelo Movie Eloquent para representar la colección movies en la base de datos sample_mflix

  • Recupera los valores de campo distintos de los documentos de la colección movies que coinciden con un filtro de query

  • Imprime los valores distintos

El ejemplo llama a los siguientes métodos en el modelo Movie:

  • where(): Coincide con documentos en los que el valor del campo directors incluye "Sofia Coppola"

  • select()Recupera los valores del campo imdb.rating de los documentos coincidentes

  • distinct()Recupera los valores únicos del campo seleccionado y devuelve la lista de valores

  • get(): Recupera los resultados de la consulta

$ratings = Movie::where('directors', 'Sofia Coppola')
->select('imdb.rating')
->distinct()
->get();
echo $ratings;
[[5.6],[6.4],[7.2],[7.8]]

Este ejemplo realiza las siguientes acciones:

  • Accede a la colección movies llamando al método table() desde la fachada DB

  • Recupera los valores de campo distintos de los documentos de la colección movies que coinciden con un filtro de query

  • Imprime los valores distintos

El ejemplo llama a los siguientes métodos para crear query:

  • where(): Coincide con documentos en los que el valor del campo directors incluye "Sofia Coppola"

  • select()Recupera los valores del campo imdb.rating de los documentos coincidentes

  • distinct()Recupera los valores únicos del campo seleccionado y devuelve la lista de valores

  • get(): Recupera los resultados de la consulta

$ratings = DB::table('movies')
->where('directors', 'Sofia Coppola')
->select('imdb.rating')
->distinct()
->get();
echo $ratings;
[5.6,6.4,7.2,7.8]

Para aprender a insertar datos en MongoDB, consulte la guía Insertar documentos.

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