MongoDB proporciona diferentes tipos de operadores de actualización de array para actualizar los valores de los campos de array en los documentos y el operador $addToSet es uno de ellos. Este operador se usa para agregar un valor a una array y si el valor ya existe en la array, este operador no hará nada.
Sintaxis:
{ $addToSet: { <field1>: <value1>, ... } }
Aquí, <field> puede especificar con notación de puntos en documentos incrustados/anidados.
- Este operador no inserta elementos duplicados en la array y no afecta los elementos duplicados ya presentes. Aquí, el orden de los valores no importa.
- Si el campo especificado en el
$addToSet
operador no está presente en el documento, este operador crea un campo de array en el documento con valores o elementos. - Si el valor especificado es una array en el
$addToSet
operador, entonces este operador agregará la array completa como un solo elemento. O si desea agregar elementos por separado en la array, use el modificador $each. - Este operador no funciona con campos que no son de array.
- Si el valor es un documento, MongoDB verifica si el documento existe o no en la array. Si el documento especificado contiene el mismo campo y valor y el orden del campo también es el mismo que el del documento existente, entonces el documento especificado es un documento duplicado como resultado, el operador $addToSet no agrega dichos documentos en la array.
- Puede usar este operador con métodos como update(), findAndModify(), etc., según sus requisitos.
En los siguientes ejemplos, estamos trabajando con:
Base de datos: GeeksforGeeks
Colección: colaborador
Documento: dos documentos que contienen los detalles del colaborador en forma de pares de valor de campo.
Agregar valor en una array:
En este ejemplo, estamos agregando el valor «JS++» en la array de idioma del documento que satisface la condición especificada, es decir, el nombre: «Rohit».
db.contributor.update({name: "Rohit"}, {$addToSet: {language: "JS++"}})
Agregar valores duplicados en la array:
En este ejemplo, estamos agregando el valor «Perl» en la array de idioma del documento que satisface la condición especificada, es decir, el nombre: «Sumit». Pero el operador $addToSet no agrega este valor en la array de idioma porque ya existe en la array de idioma.
db.contributor.update({name: "Sumit"}, {$addToSet: {language: "Perl"}})
Usando $cada modificador con el operador $addToSet:
En este ejemplo, estamos agregando varios valores, es decir, [“Perl”, “Go”, “Ruby”] en la array de idioma con la ayuda de $cada modificador. Aquí, «Perl» no se agrega a la array porque ya existe.
db.contributor.update({name: "Sumit"}, {$addToSet: {language:{$each: ["Perl", "Go", "Ruby"]}}})
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA