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

The $position modifier specifies the location in the array at which the $push operator inserts elements. Without the $position modifier, the $push operator inserts elements to the end of the array. See $push modifiers for more information.

To use the $position modifier, it must appear with the $each modifier.

{
$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):

  • A non-negative number corresponds to the position in the array, starting from the beginning of the array. If the value of <num> is greater or equal to the length of the array, the $position modifier has no effect and $push adds elements to the end of the 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 can accept a negative array index (position) value to indicate the position starting from the end, counting from (but not including) the last element of the array. For example, -1 indicates the position just before the last element in the array.

Adicione o seguinte documento à coleção students:

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

The following operation specifies -2 for the $position to add 90 at the position two places before the last element, and then 80 at the position two places before the last element.

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