Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$position (operador de actualización)

$position

La $position el modificador especifica la ubicación en el arreglo en la que el El operador $push inserta elementos. Sin el modificador $position, el operador $push inserta elementos al final del arreglo. Consulta los modificadores $push para obtener más información.

Para usar el modificador $position, debe aparecer junto con el modificador $each.

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

<num> indica la posición en el arreglo, basada en un índice de arreglo base cero (posición):

  • Un número no negativo corresponde a la posición en el arreglo, a partir del inicio del arreglo. Si el valor de <num> es mayor o igual que la longitud del arreglo, el modificador $position no tiene efecto y $push añade elementos al final del arreglo.

  • Un número negativo corresponde a la posición en el arreglo, contando desde (pero sin incluir) el último elemento del arreglo. Por ejemplo, -1 indica la posición justo antes del último elemento en el arreglo. Si especificas varios elementos en el arreglo $each, el último elemento añadido ocupa la posición especificada desde el final. Si el valor absoluto de <num> es mayor o igual que la longitud del arreglo, el $push agrega elementos al principio del arreglo.

A partir de MongoDB 5.0, los operadores de actualización procesan los campos de documentos con nombres basados en cadenas en orden lexicográfico. Los campos con nombres numéricos se procesan en orden numérico. Consulta Comportamiento del operador de actualización para obtener más información.

Crear la colección students:

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

La siguiente operación actualiza el campo scores para agregar los elementos 50, 60 y 70 al inicio del arreglo:

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

La operación resultó en el siguiente documento actualizado:

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

Agregue un documento a la colección students:

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

La siguiente operación actualiza el campo scores para agregar los elementos 20 y 30 en el índice de arreglo (posición) 2:

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

La operación resultó en el siguiente documento actualizado:

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

$position puede aceptar un valor negativo de índice de arreglo (posición) para indicar la posición a partir del final, contando desde (pero sin incluir) el último elemento del arreglo. Por ejemplo, -1 indica la posición justo antes del último elemento del arreglo.

Añada el siguiente documento a la colección students:

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

La siguiente operación especifica -2 para $position a fin de añadir 90 en la posición dos lugares antes del último elemento, y después 80 en la posición dos lugares antes del último elemento.

Importante

Con un índice (posición) de arreglo negativo, si especificas varios elementos en el arreglo $each, el último elemento añadido está en la posición especificada contando desde el final.

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

La operación resultó en el siguiente documento actualizado:

{ "_id" : 3, "scores" : [ 50, 60, 20, 30, 90, 80, 70, 100 ] }

Volver

$each

En esta página