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

$position (operador de atualização)

$position

O modificador$positionespecifica o local na array em que o operador$pushinsere elementos. Sem o modificador$position, o operador$pushinsere elementos no final da array. Consulte modificadores $push para obter mais informações.

Para utilizar o $position modificador, ele deve aparecer com o $each modificador.

{
$push: {
<field>: {
$each: [ <value1>, <value2>, ... ],
$position: <num>
}
}
}

<num> indica a posição na array, com base em um índice de array baseado em zero (posição):

  • Um número não negativo corresponde à posição na array, começando do início da array. Se o valor de <num> for maior ou igual ao comprimento da array, o modificador não $position $push terá efeito e adicionará elementos ao final da array.

  • Um número negativo corresponde à posição na array, contando a partir do (mas não incluindo o) último elemento da array. Por exemplo, -1 indica a posição imediatamente antes do último elemento da array. Se você especificar vários elementos na array $each, o último elemento adicionado estará na posição especificada a partir do final. Se o valor absoluto de <num> for maior ou igual ao comprimento da array, o $push adicionará elementos ao início da array.

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.

Crie a coleção students:

db.students.insertOne( { "_id" : 1, "scores" : [ 100 ] } )

A seguinte operação atualiza o campo scores para adicionar os elementos 50, 60 e 70 ao início da array:

db.students.updateOne(
{ _id: 1 },
{
$push: {
scores: {
$each: [ 50, 60, 70 ],
$position: 0
}
}
}
)

A operação resulta no seguinte documento atualizado:

{ "_id" : 1, "scores" : [ 50, 60, 70, 100 ] }

Adicionar um documento à coleção students:

db.students.insertOne( { "_id" : 2, "scores" : [ 50, 60, 70, 100 ] } )

A seguinte operação atualiza o campo scores para adicionar os elementos 20 e 30 no índice de array (posição) de 2:

db.students.updateOne(
{ _id: 2 },
{
$push: {
scores: {
$each: [ 20, 30 ],
$position: 2
}
}
}
)

A operação resulta no seguinte documento atualizado:

{ "_id" : 2, "scores" : [ 50, 60, 20, 30, 70, 100 ] }

$position pode aceitar um valor de índice de array negativa (posição) para indicar a posição a partir do final, contando a partir (mas não incluindo) o último elemento da array. Por exemplo, -1 indica a posição pouco antes do último elemento na array.

Adicione o seguinte documento à coleção students:

db.students.insertOne(
{ "_id" : 3, "scores" : [ 50, 60, 20, 30, 70, 100 ] }
)

A operação a seguir especifica -2 para para $position adicionar 90 na posição duas casas antes do último elemento e, em seguida,80 na posição duas casas antes do último elemento.

Importante

Com um índice de array negativo (posição), se você especificar vários elementos na array $each, o último elemento adicionado estará na posição especificada a partir do final.

db.students.updateOne(
{ _id: 3 },
{
$push: {
scores: {
$each: [ 90, 80 ],
$position: -2
}
}
}
)

A operação resulta no seguinte documento atualizado:

{ "_id" : 3, "scores" : [ 50, 60, 20, 30, 90, 80, 70, 100 ] }
Avalie esta página