Docs Menu
Docs Home
/ /

Insertar documentos

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úrese de que los datos no violen ningún índice único de la colección. Al insertar el primer documento de una colección o al crear una nueva, MongoDB crea automáticamente un índice único en el _id campo.

Para obtener más información sobre la creación de índices en colecciones de MongoDB mediante el generador de esquemas de Laravel, consulte Sección Administrar índices de la documentación del Generador de esquemas.

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

Las operaciones de esta guía hacen referencia a la siguiente clase de modelo Eloquent:

Concierto.php
<?php
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 $fillable atributo permite usar 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 del modelo Eloquent.

El atributo $casts indica a Laravel que convierta los atributos a tipos de datos comunes. Para obtener más información, consulte Conversión de atributos en la documentación de Laravel.

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

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 Concert

  • Asigna valores de cadena a los campos performer y venue

  • Asigna una matriz de cadenas al campo genre

  • Asigna un número al campo ticketsSold

  • Asigna una fecha al campo performanceDate utilizando el paquete Carbon

  • Inserta 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;

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 Carbon PHP API, consulte el repositorio Carbon GitHub.

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.

Para ver ejemplos de código ejecutables que demuestran cómo insertar documentos mediante la integración de Laravel, consulte los siguientes ejemplos de uso:

Para aprender a modificar datos que ya están en MongoDB, consulte la guía Modificar documentos.

Volver

Operaciones de escritura

En esta página