MongoDB Agregar elemento a la matriz

Shraddha Paghdar 20 junio 2023
MongoDB Agregar elemento a la matriz

Este artículo analizará muchos métodos para agregar a una matriz en MongoDB.

Agregar a la matriz en MongoDB

Use el operador $push para agregar valor a una matriz

El operador $push es uno de los diversos operadores de actualización de matriz que ofrece MongoDB para actualizar el contenido de los campos de matriz en los documentos. El operador $push puede agregar un valor específico a una matriz.

El operador $push agrega elementos al final de la matriz. Esta acción fallará si el campo especificado por el operador $push no es una matriz.

Sintaxis:

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

En este caso, el campo se puede especificar mediante matrices, documentos incrustados/anidados o notación de puntos. Dependiendo de tus necesidades, puedes combinar este operador con métodos como update(), findAndModify(), etc.

El operador $push agregará el campo de matriz con el valor como sus elementos si el campo proporcionado aún no está en el documento.

La matriz completa se agregará como un solo elemento si el valor del operador $push es una matriz. Además, puede usar el modificador $each y el operador $push si desea agregar cada componente de valor de forma independiente.

Considere el siguiente ejemplo para ayudarlo a comprender mejor la idea anterior.

db.employees.update(
    {name: "John Doe"},
    {$push: {'professional_skills.$.technical': { skill: "C++", exp: '1' }}}
)

En el ejemplo anterior, estamos cambiando el usuario "John Doe" en la colección empleados. La matriz de habilidades_profesionales contiene las habilidades técnicas, habilidades de comunicación, etc. es lo que estamos almacenando en este lugar.

Estamos impulsando la nueva experiencia técnica de un empleado en habilidad técnica al integrar su experiencia como un objeto. Ejecute la línea de código anterior en MongoShell, que es compatible con MongoDB.

Producción :

{
  "_id" : ObjectId("54f612b6029b47919a90cesd"),
  "email" : "johndoe@exampledomain.com",
  "name" : "John Doe",
  "country" : "USA",
  professional_skills: [
        {
            technical:[
                { skill:'javascript', exp: 4},
                { skill:'c', exp: 3}
            ]
        },
    ]
}

Use el operador $addToSet para agregar valor a una matriz

Al agregar un valor a una matriz, el operador $addToSet verifica si el valor ya existe en la matriz; de lo contrario, no hace nada. Este operador no agrega elementos duplicados a la matriz y no afecta los elementos duplicados que ya están allí.

El orden de los valores es irrelevante en esta situación.

Sintaxis:

{
    $addToSet: {
        <field1>: <value1>,
        <field2>: <value2>,
        ...
    }
}

En este caso, el campo se puede especificar mediante matrices, documentos incrustados/anidados o notación de puntos. Dependiendo de tus necesidades, puedes combinar este operador con métodos como update(), findAndModify(), etc.

Los campos que no sean matrices no se pueden utilizar con este operador. El operador $addToSet genera un campo de matriz en el documento con valores o elementos si el campo solicitado no existe.

Considere el siguiente ejemplo para ayudarlo a comprender mejor la idea anterior.

db.employees.update(
   {name: "John Doe"},
   {$addToSet: {'professional_skills.$.technical': { skill: "C++", exp: '1' }}}
)

En el ejemplo anterior, estamos cambiando el usuario "John Doe" en la colección empleados. La matriz de habilidades_profesionales contiene las habilidades técnicas, habilidades de comunicación, etc. es lo que estamos almacenando en este lugar.

Estamos impulsando la nueva experiencia técnica de un empleado en habilidad técnica al integrar su experiencia como un objeto. La principal diferencia entre ellos es que $addToSet agregará el elemento si aún no existe, mientras que $push agregará el nuevo elemento a la matriz o lista.

Ejecute la línea de código anterior en MongoShell, que es compatible con MongoDB.

Producción :

{
  "_id" : ObjectId("54f612b6029b47919a90cesd"),
  "email" : "johndoe@exampledomain.com",
  "name" : "John Doe",
  "country" : "USA",
  professional_skills: [
        {
            technical:[
                { skill:'javascript', exp: 4},
                { skill:'c', exp: 3}
            ]
        },
    ]
}
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

Artículo relacionado - MongoDB Array