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

$push (operador de atualização)

$push

The $push operator appends a specified value to an array.

Você pode utilizar o $push para implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

The $push operator has the form:

{ $push: { <field1>: <value1>, ... } }

Para especificar um <field> em um documento incorporado ou em uma array, use a notação de ponto.

A partir do MongoDB 5.0, os operadores de atualização processam campos de documento com nomes baseados em cadeia de caracteres em ordem lexicográfica. Os campos com nomes numéricos são processados em ordem numérica. Consulte Atualizar Comportamento de Operadores para detalhes.

If the field is absent in the document to update, $push adds the array field with the value as its element.

Se o campo não for uma array, a operação falhará.

If the value is an array, $push appends the whole array as a single element. To add each element of the value separately, use the $each modifier with $push. For an example, see Append Multiple Values to an Array. For a list of modifiers available for $push, see Modifiers.

Starting in MongoDB 5.0, mongod no longer raises an error when you use an update operator like $push with an empty operand expression ( { } ). An empty update results in no changes and no oplog entry is created (meaning that the operation is a no-op).

You can use the $push operator with the following modifiers:

Modifier
Descrição

Anexa vários valores ao campo de array.

Limita o número de elementos de array. Requer o uso do modificador $each.

Ordena elementos da array. Requer o uso do modificador $each.

Specifies the location in the array at which to insert the new elements. Requires the use of the $each modifier. Without the $position modifier, the $push appends the elements to the end of the array.

When used with modifiers, the $push operator has the form:

{ $push: { <field1>: { <modifier1>: <value1>, ... }, ... } }

The processing of the $push operation with modifiers occur in the following order, regardless of the order in which the modifiers appear:

  1. Atualize a array para adicionar elementos na posição correta.

  2. Aplicar ordenação, se especificado.

  3. Divida a array, se especificado.

  4. Armazene a array.

Os exemplos nesta página usam dados do conjunto de dados sample_mflix. Para obter detalhes sobre como carregar este conjunto de dados em sua implantação do MongoDB autogerenciado, consulte Carregar o conjunto de dados de amostra. Se você fez alguma modificação nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.

The following example uses the $push operator to append "Classic" to the genres array in the matching movie document:

db.movies.updateOne(
{ title: "The Dark Knight" },
{ $push: { genres: "Classic" } }
)

A operação retorna o seguinte resultado:

{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}

The following example uses the $push operator to append "Acclaimed" to the genres array in all matching movie documents:

db.movies.updateMany(
{ "imdb.rating": { $gt: 9 } },
{ $push: { genres: "Acclaimed" } }
)

A operação retorna o seguinte resultado:

{
acknowledged: true,
insertedId: null,
matchedCount: '...',
modifiedCount: '...',
upsertedCount: 0
}

Use $push with the $each modifier to append multiple values to the array field.

db.movies.updateOne(
{ title: "The Dark Knight" },
{ $push: { genres: { $each: [ "Modern Classic", "Award-Winning" ] } } }
)

A operação retorna o seguinte resultado:

{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}

Adicione o seguinte documento à coleção students:

db.students.insertOne(
{
"_id" : 5,
"quizzes" : [
{ "wk": 1, "score" : 10 },
{ "wk": 2, "score" : 8 },
{ "wk": 3, "score" : 5 },
{ "wk": 4, "score" : 6 }
]
}
)

The following $push operation uses:

  • o modificador $each para adicionar vários documentos à array quizzes,

  • o modificador $sort para ordenar todos os elementos da array quizzes modificada pelo campo score em ordem decrescente e

  • o modificador $slice para manter apenas os três primeiros elementos ordenados da array quizzes.

db.students.updateOne(
{ _id: 5 },
{
$push: {
quizzes: {
$each: [ { wk: 5, score: 8 }, { wk: 6, score: 7 }, { wk: 7, score: 6 } ],
$sort: { score: -1 },
$slice: 3
}
}
}
)

Após a operação, somente os três testes de pontuação mais alta estão na array:

{
"_id" : 5,
"quizzes" : [
{ "wk" : 1, "score" : 10 },
{ "wk" : 2, "score" : 8 },
{ "wk" : 5, "score" : 8 }
]
}