Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$push (operador de actualización)

$push

El operador agrega un valor específico a una $push matriz.

Puedes usar $push para implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El operador tiene la $push forma:

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

Para especificar un <field> en un documento incrustado o en un arreglo, utiliza notación de puntos.

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.

Si el campo no está presente en el documento a actualizar, agrega el campo de matriz con el valor como su$push elemento.

Si el campo no es un arreglo, la operación falla.

Si el valor es una matriz, agrega toda$push la matriz como un solo elemento. Para agregar cada elemento del valor por separado, use el $each modificador $push con. Para ver un ejemplo, consulte Agregar varios valores a una matriz. Para ver una lista de $push los modificadores disponibles para, consulte Modificadores.

A partir de MongoDB 5.0, mongodya no genera un error cuando se utiliza un operador de actualización como$pushcon una expresión de operando vacía ( { } ). Una actualización vacía no produce cambios y no se crea ninguna entrada en el oplog (lo que significa que la operación no tiene efecto).

Puedes usar el operador con los siguientes $push modificadores:

Modifier
Descripción

Agrega múltiples valores al campo del arreglo.

Limita el número de elementos del arreglo. Requiere el uso del modificador $each.

Ordena los elementos del arreglo. Requiere el uso del modificador $each.

Especifica la posición en el array donde se insertarán los nuevos elementos. Requiere el uso del modificador$each. Sin el modificador$position, el$pushañade los elementos al final del array.

Cuando se utiliza con modificadores, el operador tiene la $push forma:

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

El procesamiento de la operación con modificadores se produce en el siguiente orden, independientemente del orden en que aparezcan los $push modificadores:

  1. Actualiza el arreglo para añadir elementos en la posición correcta.

  2. Aplica la ordenación, si está especificada.

  3. Divide el arreglo, si está especificado.

  4. Almacena el arreglo.

Los ejemplos de esta página utilizan datos del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si se realizó alguna modificación en las bases de datos de muestra, es posible que se deban descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

El siguiente ejemplo utiliza el operador para $push agregar "Classic" al genres array en el documento de película correspondiente:

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

La operación devuelve el siguiente resultado:

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

El siguiente ejemplo utiliza el operador para $push agregar "Acclaimed" al genres array en todos los documentos de películas coincidentes:

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

La operación devuelve el siguiente resultado:

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

Utilice $push con el modificador para agregar varios valores al campo de $each matriz.

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

La operación devuelve el siguiente resultado:

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

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

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

La siguiente operación $push utiliza:

  • el modificador $each para agregar múltiples documentos al arreglo quizzes,

  • el modificador $sort para ordenar todos los elementos del arreglo quizzes modificado por el campo score en orden descendente, y

  • el modificador $slice para conservar solo los primeros tres elementos ordenados del arreglo 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
}
}
}
)

Después de la operación, solo los tres cuestionarios con mayor puntuación están en el arreglo:

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