Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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ú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.

Las operaciones en 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 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.

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.

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 string a los campos performer y venue

  • Asigna un arreglo de cadenas de texto 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 API de Carbon PHP, consulte el repositorio Carbon en 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 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.

Volver

Operaciones de escritura

En esta página