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.
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 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 Laravel. Estes exemplos utilizam a sample_mflix.movies collection a partir do conjunto de dados de amostra do Atlas .

Dica

Você pode executar os exemplos completos em seu próprio aplicação Laravel ou a partir do my-app aplicação criado no tutorial de Introdução. Os exemplos usam a Movie.php classe de modelo criada neste tutorial para demonstrar operações na movies collection do MongoDB . Para executar a operação, você pode copiar o código de amostra para um endpoint do controlador em seu aplicação 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 a partir das 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();
{
"title": "Marriage Story",
"year": 2019,
"runtime": 136,
"updated_at": "...",
"created_at": "...",
"_id": "..."
}

Este exemplo executa as seguintes ações:

  • Acessos a coleção movies chamando o método table() a partir da fase DB

  • Insere um documento na coleção movies

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

O exemplo chama o método insert() 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

$success = DB::table('movies')
->insert([
'title' => 'Marriage Story',
'year' => 2019,
'runtime' => 136,
]);
echo 'Insert operation success: ' . ($success ? 'yes' : 'no');
Insert operation success: yes

Selecione a partir das 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');
Insert operation success: yes

Este exemplo executa as seguintes ações:

  • Acessos a coleção movies chamando o método table() a partir da fase DB

  • 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 = DB::table('movies')
->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');
Insert operation success: yes

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.