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 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