Overview
En esta guía, puede aprender cómo insertar documentos en colecciones MongoDB desde su 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 la creación de índices en colecciones de MongoDB mediante el generador de esquemas de Laravel, consulte 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 de 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() tiene éxito, puede acceder a la instancia del modelo en la que llamó al 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();
Puede recuperar el valor _id del documento insertado accediendo al miembro 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'), ]);
Para obtener más información sobre la extensión API de Carbon PHP, consulte el repositorio Carbon en GitHub.
Inserta varios documentos
Este ejemplo muestra cómo usar 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 la aplicación necesita realizar para guardar los documentos.
Si el método insert() tiene éxito, devuelve el valor 1. Si falla, genera 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 aprender cómo modificar datos que ya están en MongoDB, consulta la guía Modificar documentos.