Menu Docs

Insira documentos

Neste guia, você aprenderá a inserir documentos nas coleções do MongoDB a partir do seu aplicação Laravel usando o Laravel MongoDB.

Ao inserir os documentos, certifique-se de que os dados não violem nenhum índice exclusivo da coleta. Ao inserir o primeiro documento de uma collection ou criar uma nova collection, o MongoDB cria automaticamente um índice único no campo _id.

Para obter mais informações sobre como criar índices nas collections do MongoDB usando o construtor de esquemas Laravel, consulte a seção Gerenciar índices da documentação do Schema Builder.

Para saber mais sobre os modelos Eloquent na integração com o Laravel, consulte a seção Modelos Eloquent .

As operações deste guia referenciam a seguinte classe de modelo do Eloquent :

Corrigir.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'];
}

Dica

O atributo $fillable permite utilizar a atribuição em massa Laravel para inserir operações. Para saber mais sobre atribuição em massa, consulte Personalizar Atribuição de Massa na documentação da Classe de Modelo Eloquent.

O $casts atributo instrui o Laravel a converter atributos em tipos de dados comuns. Para saber mais, consulte Fundição de atributos na documentação do Laravel.

Os exemplos nesta seção mostram como utilizar os métodos save() e create() Eloquent para inserir uma instância de um modelo Concert como um documento MongoDB .

Quando o método save() for bem-sucedido, você poderá acessar a instância do modelo na qual chamou o método.

Se a operação falhar, a instância do modelo receberá null.

Este código de exemplo executa as seguintes ações:

  • Cria uma nova instância do modelo Concert

  • Atribui valores de string aos campos performer e venue

  • Atribui uma array de strings ao campo genre

  • Atribui um número ao campo ticketsSold

  • Atribui uma data ao campo performanceDate usando o pacote Carbon

  • Insere o documento chamando o 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();

Você pode recuperar o valor _id do documento inserido acessando o membro id do modelo, como mostrado no seguinte exemplo de código:

$insertedId = $concert->id;

Se você ativar a atribuição em massa definindo os atributos $fillable ou $guarded , poderá usar o método create() do modelo Eloquent para executar a inserção em uma única chamada, conforme mostrado no exemplo a seguir:

$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 saber mais sobre a extensão da do PHP API Cloud , consulte o Charts Github Repositório .

Este exemplo mostra como utilizar o método insert() Eloquent para inserir múltiplas instâncias de um modelo Concert como documentos MongoDB . Esse método de inserção em massa reduz o número de chamadas que seu aplicação precisa fazer para salvar os documentos.

Quando o método insert() é bem-sucedido, ele retorna o valor 1. Se falhar, lança uma exceção.

O exemplo a seguir salva vários modelos em uma única chamada, passando-os como uma array para o 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);

Observação

Este exemplo envolve as datas no MongoDB\BSON\UTCDateTime classe para convertê-lo em um tipo que o MongoDB possa serializar porque o Laravel ignora a conversão de atributos em operações de inserção em massa.

Para visualizar exemplos de código executáveis que demonstram como inserir documentos usando a integração com o Laravel, consulte os seguintes exemplos de uso:

Para saber como modificar dados que já estão no MongoDB, consulte o guia Modificar documentos.