Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

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 coleções do MongoDB usando o construtor de esquemas Laravel, consulte a seção Gerenciar índices da documentação do Construtor de esquemas.

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

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 atributo $casts 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'),]);

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 true. 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 na classe MongoDB\BSON\UTCDateTime para convertê-la em um tipo que o MongoDB pode serializar porque o Laravel ignora a conversão de atributos em operações de inserção em massa.

As seções a seguir fornecem exemplos de código totalmente executáveis que demonstram como inserir documentos usando a integração com o Laravel. Esses exemplos utilizam a coleção sample_mflix.movies dos conjuntos de dados de amostra do Atlas.

Dica

Você pode executar os exemplos completos em seu próprio aplicativo Laravel ou no aplicativo my-app criado no tutorial Introdução . Os exemplos usam a classe de modelo Movie.php criada neste tutorial para demonstrar operações na coleção movies do MongoDB . Para executar a operação, você pode copiar o código de amostra para um ponto de extremidade do controlador em seu aplicativo Laravel.

Para visualizar a saída esperada da operação, você pode adicionar uma rota web ao seu aplicação que chama a função do controlador e retorna o resultado para uma interface web.

Selecione nas seguintes abas Eloquent e Query Builder para visualizar exemplos para cada sintaxe de query correspondente:

Este exemplo executa as seguintes ações:

  • Utiliza o modelo Movie Eloquent para representar a coleção do sample_mflix movies banco de dados do

  • Insere um documento na coleção movies

  • Imprime o documento recém-inserido

O exemplo chama o método create() para inserir um documento que contém os seguintes campos e valores:

  • title valor de "Marriage Story"

  • year valor de 2019

  • runtime valor de 136

$movie = Movie::create([ 'title' => 'Marriage Story', 'year' => 2019, 'runtime' => 136,]); echo $movie->toJson();

Selecione nas seguintes abas Eloquent e Query Builder para visualizar exemplos para cada sintaxe de query correspondente:

Este exemplo executa as seguintes ações:

  • Utiliza o modelo Movie Eloquent para representar a coleção do sample_mflix movies banco de dados do

  • Insere documentos na coleção movies

  • Imprime se a operação de inserção é bem-sucedida

O exemplo chama o método insert() para inserir documentos que representam filmes lançados em 2023.

$success = Movie::insert([ [ 'title' => 'Anatomy of a Fall', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-08-23')), ], [ 'title' => 'The Boy and the Heron', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-12-08')), ], [ 'title' => 'Passages', 'release_date' => new UTCDateTime(new DateTimeImmutable('2023-06-28')), ],]); echo 'Insert operation success: ' . ($success ? 'yes' : 'no');

Para saber mais sobre a extensão da API do Cloud PHP, consulte o repositório do Github do Cloud.

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