Docs Menu
Docs Home
/ /
Arreglos

$position

$position

El modificador especifica la ubicación en la matriz en la que se encuentra $position el $push El operador inserta elementos. Sin el $position modificador, el operador inserta elementos $push al final del array. Consulte los modificadores $push para más información.

Para utilizar el $position modificador,debe aparecer con el $each modificador.

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

<num> Indica la posición en la matriz, en función de un índice de matriz basado en cero (posición):

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

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

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 comienzo de la matriz:

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

La operación da como resultado el siguiente documento actualizado:

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

Agregar 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 matriz (posición) de 2:

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

La operación da como resultado el siguiente documento actualizado:

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

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

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 para $position agregar 90 en la posición dos lugares antes del último elemento, y luego 80 en la posición dos lugares antes del último elemento.

Importante

Con un índice de matriz negativo (posición), si especifica varios elementos en la matriz, el último elemento agregado estará en la posición especificada desde el $each final.

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

La operación da como resultado el siguiente documento actualizado:

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

Volver

$each

En esta página