Overview
En esta guía, puedes aprender cómo insertar documentos en colecciones de MongoDB desde tu aplicación Laravel utilizando Laravel MongoDB.
Al insertar los documentos, asegúrate de que los datos no infrinjan ningún índice único de la colección. Al insertar el primer documento de una colección o crear una colección nueva, MongoDB crea automáticamente un índice único en la _id .
Para obtener más información sobre cómo crear índices en colecciones de MongoDB utilizando el generador de esquemas de Laravel, consulte el Administrar índices sección de la documentación de Schema Builder.
Para obtener más información sobre los modelos Eloquent en la integración de Laravel, consulta la sección Modelos Eloquent.
Modelo muestra
Las operaciones en esta guía hacen referencia a la siguiente clase de modelo Eloquent:
namespace App\Models; use MongoDB\Laravel\Eloquent\Model; class Concert extends Model { protected $connection = 'mongodb'; protected $fillable = ['performer', 'venue', 'genres', 'ticketsSold', 'performanceDate']; protected $casts = ['performanceDate' => 'datetime']; }
Tip
El atributo $fillable permite utilizar la asignación masiva de Laravel para operaciones de inserción. Para obtener más información sobre la asignación masiva, consulta Personalizar la asignación masiva en la documentación de la Clase de Modelo Eloquent.
El atributo $casts indica a Laravel que debe convertir los atributos a tipos de datos comunes. Para obtener más información, consulte Conversión de atributos en la documentación de Laravel.
Inserta un documento
Los ejemplos de esta sección muestran cómo utilizar los métodos Eloquent save() y create() para insertar una instancia de un modelo Concert como un documento de MongoDB.
Método save()
Cuando el método save() tenga éxito, podrás acceder a la instancia del modelo en la que llamaste a ese método.
Si la operación falla, a la instancia del modelo se le asigna null.
Este código de ejemplo realiza las siguientes acciones:
Crea una nueva instancia del modelo
ConcertAsigna valores de string a los campos
performeryvenueAsigna un arreglo de cadenas de texto al campo
genreAsigna un número al campo
ticketsSoldAsigna una fecha al campo
performanceDateutilizando el paqueteCarbonInserta el documento llamando al método
save()
$concert = new Concert(); $concert->performer = 'Mitsuko Uchida'; $concert->venue = 'Carnegie Hall'; $concert->genres = ['classical']; $concert->ticketsSold = 2121; $concert->performanceDate = Carbon::create(2024, 4, 1, 20, 0, 0, 'EST'); $concert->save();
Puedes recuperar el valor _id del documento insertado accediendo al nodo id del modelo, como se muestra en el siguiente ejemplo de código:
$insertedId = $concert->id;
create() Método
Si habilita la asignación masiva definiendo los atributos $fillable o $guarded, puede usar el método create() del modelo Eloquent para realizar la inserción en una sola llamada, como se muestra en el siguiente ejemplo:
$insertResult = Concert::create([ 'performer' => 'The Rolling Stones', 'venue' => 'Soldier Field', 'genres' => [ 'rock', 'pop', 'blues' ], 'ticketsSold' => 59527, 'performanceDate' => Carbon::create(2024, 6, 30, 20, 0, 0, 'CDT'), ]);
Inserta varios documentos
Este ejemplo muestra cómo utilizar el método Eloquent insert() para insertar múltiples instancias de un modelo Concert como documentos MongoDB. Este método de inserción masiva reduce el número de llamadas que tu aplicación necesita hacer para guardar los documentos.
Cuando el método insert() tiene éxito, devuelve el valor 1. Si falla, lanza una excepción.
El siguiente ejemplo guarda múltiples modelos en una sola llamada pasándolos como un arreglo al método insert():
$data = [ [ 'performer' => 'Brad Mehldau', 'venue' => 'Philharmonie de Paris', 'genres' => [ 'jazz', 'post-bop' ], 'ticketsSold' => 5745, 'performanceDate' => new UTCDateTime(Carbon::create(2025, 2, 12, 20, 0, 0, 'CET')), ], [ 'performer' => 'Billy Joel', 'venue' => 'Madison Square Garden', 'genres' => [ 'rock', 'soft rock', 'pop rock' ], 'ticketsSold' => 12852, 'performanceDate' => new UTCDateTime(Carbon::create(2025, 2, 12, 20, 0, 0, 'CET')), ], ]; Concert::insert($data);
Nota
Este ejemplo envuelve las fechas en la clase MongoDB\BSON\UTCDateTime para convertirlo a un tipo que MongoDB pueda serializar, porque Laravel omite el casteo de atributos en operaciones masivas de inserción.
Información Adicional
Para ver ejemplos de código ejecutable que demuestren cómo insertar documentos usando la Integración con Laravel, consulta los siguientes ejemplos de uso:
Para obtener más información sobre la extensión API de Carbon PHP, consulte el repositorio Carbon en GitHub.
Para aprender cómo modificar datos que ya están en MongoDB, consulta la guía Modificar documentos.